Я использовал столбец в выражении case, и он отлично работал на сервере1. Когда я запускал его на сервере2, он терпел неудачу, потому что столбец имел в нем значение «false».Как безопасно преобразовать varchar (255) в int?
Столбец является varchar (255), но в моем выражении я использовал его, как если бы это был тип INT. Он работал нормально, но теперь он терпит неудачу из-за «ложного» значения в server2.
Как можно безопасно преобразовать в INT, и если преобразование не может быть, по умолчанию 0.
Возможно ли это?
Мой запрос выглядит следующим образом:
UPDATE t1
set
c1 = ISNULL(
(
SELECT CASE c2
WHEN 123 then 'hello'
WHEN 234 then 'bye'
ELSE ''
END
)
, '')
FROM table1 as t1
Хммм ... ваша инструкция 'SELECT CASE' не соответствует правильному синтаксису. Вам нужно удалить 'SELECT' и либо добавить выражение после' CASE' (перед 'WHEN'), либо заменить 123/234 на булевые выражения. –
@JulienBlanchard Я обновил свое сообщение. Он отлично работает, только когда значение c2 не является числовым, тогда неявный листинг терпит неудачу. –