преобразовывать типы данных при извлечении информации из базы данных, используя sql на языке R - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь извлечь некоторую информацию из трех таблиц, связанных с внутренним объединением. Однако, когда я пытаюсь выполнить оператор on, программа сообщает мне, что один из столбцов имеет тип varchar, а другой - тип text. Я не могу использовать операторы "=" на них. Я не знаю, какой столбец является текстовым, а какой - varchar, потому что, когда я пытаюсь просмотреть их в R studio, все они отображаются как символы типа. Я пытался конвертировать, приводить и использовать LIKE вместо =, но ничего из этого не получилось.

Я не могу изменить тип переменной столбца, потому что это не мои таблицы. Это SQL-коды, которые будут частью запроса и отправляются в базу данных на R языках, которые будут получать и обрабатывать любые возвращенные данные.

Я впервые попробовал

"ON CONVERT(varchar(10), A.A11) = CONVERT(varchar(10), B.B2)"

затем

"ON CAST(A.A11 AS text) = CAST(B.B2 AS text)"

а также

"ON A.A11 LIKE B.B2"

Я пытался изменить их на text и varchar, но это все еще не работает. Сообщение об ошибке

42000 402 [Microsoft][ODBC SQL Server Driver][SQL Server]The data types varchar and text are incompatible in the equal to operator.

Я следовал инструкциям и ответам онлайн, поэтому в нем не должно быть ошибок

1 Ответ

0 голосов
/ 05 июня 2019

это работает для меня на сервере sql.Прилагается образец кода для вас

create table #Test_1 (
val_1 varchar(10) null
,check_case text null
)


create table #Test_2 (
val_2 varchar(10) null
,check_case varchar(10) null
)

insert into #Test_1  values
('A','test_test')
,('B','check123')
,('C','holaman')


insert into #Test_2  values
('A','check123')
,('B','test_test')
,('C','holaman')



select t1.*, t2.*
from #Test_1 t1
inner join #Test_2 t2 on t1.val_1 = t2.val_2 and convert(varchar,t1.check_case) = convert(varchar , t2.check_case )
...