MS SQL case case и проблемы с типом данных Cast / Covert - PullRequest
0 голосов
/ 23 марта 2020

У меня проблема с оператором case MS SQL, который был приведен внутри. Вот пример, который я использую.

DECLARE @bla as varchar(10) = '001234'
DECLARE @vb AS varchar(20) = 'bla'
SELECT CASE when (@vb <> 'bla') THEN CAST(@bla AS int) ELSE @bla END vbla

Результат очень странный. Это должно быть 001234. Чего мне не хватает?

+------+
| vbla |
+------+
| 1234 |
+------+

1 Ответ

2 голосов
/ 23 марта 2020

A case EXPRESSION (не оператор) возвращает один тип. Если одна из ветвей является числом, возвращаемое значение является числом.

Значение, которое вы видите, является числом , в которое преобразуется строка. Если строка начинается с не-di git, значение будет 0.

Если вы хотите увидеть начальные нули, оставьте значение в виде строки.

...