stephan20 Ответов: 1

Как я делаю ошибку преобразования типа данных varchar в smallint?


SELECT 
    F_TARIFGAM.TG_Prix, F_TARIFGAM.TG_RefCF, F_TARIFGAM.AR_Ref, 
    P_CATTARIF.CT_Intitule, P_CATTARIF.cbIndice
FROM 
    F_TARIFGAM 
INNER JOIN
    P_CATTARIF ON F_TARIFGAM.cbMarq = P_CATTARIF.cbMarq
WHERE 
     
    F_TARIFGAM.TG_RefCF = P_CATTARIF.cbIndice


Что я уже пробовал:

Приведение(P_CATTARIF.cbIndice как VARCHAR) или
Конвертировать (VARCHAR() , P_CATTARIF.cbIndice)

Afzaal Ahmad Zeeshan

Какую ошибку вы получаете?

stephan20

ошибка преобразования типа данных varchar в smallint .F_TARIFGAM.Тип TG_RefCF 'типа varchar и P_CATTARIF.cbIndice 'тип данных тип данных smallint'

Richard Deeming

Куда ты положил эту штуку? CAST? Он должен будет находиться в WHERE пункт:

WHERE F_TARIFGAM.TG_RefCF = CAST(P_CATTARIF.cbIndice As varchar(20))

stephan20

да, это сработало, но не дало мне никаких данных ??

Richard Deeming

Тогда данные в ваших таблицах-это не то, что вы думаете.

Мы не можем видеть ваши данные, поэтому мы не можем сказать вам, в чем проблема.

Попробуйте выбрать данные из обеих таблиц отдельно и сравнить столбцы, к которым вы присоединяетесь, чтобы понять, почему они не совпадают.

1 Ответов

Рейтинг:
1

Richard MacCutchan

Вы не можете бросить a VARCHAR (который представляет собой массив символов) к a SMALLINT- это совершенно разные объекты. Вы должны использовать конвертер, так как объект VARCHAR может содержать что угодно.

См. Ричард считая комментарий ниже.

[редактировать]
Понятия не имею, что случилось со всеми комментариями, но Ричард указал, что функция SQL CAST действительно преобразует значения.
[/редактировать]


stephan20

можете показать мне, где и как использовать CONVERT in script . спасибо

Richard Deeming

SQL-ы CAST функция[^] позволит вам сделать именно это и выдаст ошибку, если строка не является допустимым числом.

Richard MacCutchan

Спасибо за разъяснение.

stephan20

так как же насчет конверсии, как ее использовать? спасибо

stephan20

я пытаюсь это сделать, но она дает то же самое, что и бросок "нет данных", спасибо.

Richard MacCutchan

Становится совершенно очевидно, что все, что находится в этой области, не является действительным числом. Вам нужно использовать свой отладчик, чтобы точно узнать, какие данные он пытается преобразовать.

stephan20

Спасибо, но я понимаю . я новичок в sql server . не могли бы Вы уточнить пожалуйста

Richard MacCutchan

Ну, на самом деле нет ничего более сложного, чем "использовать отладчик". В качестве альтернативы найдите какой-нибудь способ отображения строки, которую вы пытаетесь преобразовать.

stephan20

хорошо , я попробую, спасибо Вам