2014-03-20 2 views
0

У меня есть проблема с небольшим количеством запросов в SQL:«Конверсия удалось при преобразовании значения VARCHAR» при конкатенации полей базы данных

SELECT 'INSERT INTO #tempTable (Variable1,Variable2) values (''' + Variable1 + ''','''+ Variable2 +'';' 
FROM Table1 

Моя первая переменная является VARCHAR а второй межд. У меня есть ошибка, которая говорит: Conversion failed when converting the varchar value INSERT INTO #tempTable (Variable1,Variable2) values ('00ZZZ','' to data type int.

Цель состоит в том, чтобы иметь все данные в строке, а затем вернуть эти данные во временную таблицу на другом сервере.

+0

, что вы пытаетесь сделать здесь? –

+0

Непонятно, какой контекст здесь, но вы обязательно должны прочитать http://bobby-tables.com. –

+0

Похоже, вы пытаетесь построить строку SQL в инструкции SELECT, это правильно? –

ответ

1

После прочтения сообщения об ошибке много раз я заметил знак +.

Язык SQL, похоже, пытается добавить часть varchar и часть int в int. Думаю, вы используете SQL Server.

Это терпит неудачу в SQL Server с сообщением об ошибке:

select 'abc' + 123 

Вы должны поместить бросание вокруг цифровой части:

select 'abc' + cast(123 as varchar) 

Так что в вашем случае:

SELECT 'INSERT INTO #tempTable (Variable1,Variable2) values (''' 
     + cast(Variable1 as varchar) 
     + ''',''' 
     + Variable2 
     +'');' 
FROM Table1 
+0

Первое значение не является проблемой. Это второй – Alice

+0

Да по причине, непонятной для меня, но которая должна иметь смысл для кого-то, предпосылка для SQL-сервера заключается в том, что если у вас есть varchar и int, он попытается неявно преобразовать в int. Мне кажется, что это создало бы меньше проблем, если бы они сделали противоположный выбор для неявного преобразования (ints будет чаще вписываться в varchars, чем varchars, вписывающийся в ints), но, вероятно, что-то во внутренних деталях упростило реализацию этого путь. – HLGEM

Смежные вопросы