2013-12-18 3 views
-1

Допустим, у меня есть эта переменнаяОшибка преобразования типа данных VARCHAR в числовые при использовании #table

DECLARE @Caracteristiques TABLE 
     (
      EnsembleImmobilierId int, 
      ImmobilierId  int, 
      BatimentId  int, 
      Code    varchar(5), 
      Valeur     varchar(40) 
    ) 

запрашивая у него с этим

SELECT  CONVERT(decimal(15,4), ISNULL(C.Valeur, 0)) 
FROM @Caracteristiques C 

Все кажется отлично. Если для instence, я меняю таблицу переменных для временной таблицы

CREATE TABLE #Caracteristiques 
     (
      EnsembleImmobilierId int, 
      ImmobilierId  int, 
      BatimentId  int, 
      Code    varchar(5), 
      Valeur     varchar(40) 
    ) 

Я получаю

Msg 8114, уровень 16, состояние 5, процедура IvpCalculation, линия 140
Ошибка преобразования типа данных varchar в числовой.

Как мы можем это объяснить?

+0

«Все кажется отлично» - ну, вы вставить те же данные в обеих таблицах? Я подозреваю, что нет. –

+0

Я нашел свою проблему, путь выполнения был другим для обоих случаев, а затем условие фильтра для того, где было выполнено в другом порядке, в результате чего конвертер попытался преобразовать символы ... Я пропустил, где запрос в вопросе, мой bad ... – JCorriveau

ответ

0

Я не вижу проблем в вашем запросе; скорее всего, в вашем столбце Valeur есть строковое значение, такое как «abcde», которое не конвертируется в десятичное и, следовательно, оно выбрасывает эту ошибку.

Я пробовал то же самое, и он отлично работает, если ваш столбец valeur имеет значение типа «12345»; даже если вы бросаете как cast(isnull(Valeur,'') as decimal(15,4)). см ниже скрипку

http://sqlfiddle.com/#!6/32a5b/3

+0

Я нашел свою проблему, путь выполнения был другим для обоих случаев, а затем условие фильтра для того, где было выполнено в другом порядке, в результате чего конвертер попытался преобразовать символы ... Я пропустил, где запрос вопрос, мой плохой ... – JCorriveau

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