Преобразовать буквенно-цифровой VARCHAR в INT - PullRequest
0 голосов
/ 23 августа 2011

Я использую этот скрипт

select * from mxiv_sentries where 
attrname='mskeyvalue' and mskey in
(select mskey from mxiv_sentries where attrname='MXREF_MX_PRIVILEGE' and searchvalue='672081'
and mskey not in
(select Default_login from mxman_rt_u.VPN))

это две разные таблицы, где Default_login буквенно-цифровой, а varchar и mskey - номер в INT Поэтому, когда я выполняю этот скрипт, я получаю сообщение об ошибке:

Сообщение 245, Уровень 16, Состояние 1, Строка 1 Преобразование не удалось при преобразовании значение varchar 'A15271' для типа данных int.

Подскажите, пожалуйста, как получить правильные результаты. Спасибо

1 Ответ

5 голосов
/ 23 августа 2011

Очевидно, что у вас есть значение 'A15271' в поле Default_Login в таблице VPN.

Если это varchar, вам нужно либо

  • (предпочтительно) НЕ СРАВНИТЬ С ЧИСЛАМИ , поскольку, как вы знаете, это разные типы данных и они не эквивалентны
  • или (менее предпочтительно) CAST int как Varchar до сравнения. Это будет иметь некоторые издержки и, вероятно, сделает ваши индексы спорными, но в таком запросе с такой структурой индексы могут даже не существовать.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...