Это одно выражение:
ISNULL(ABCColumn, '--') as ABCColumn
Возвращает один тип.Но какого типа?Возвращает ли оно число, потому что одно значение является числом?Или строка?
В этом случае ISNULL()
возвращает число с плавающей точкой, потому что первый аргумент - это число с плавающей точкой.
Правила описаны в документации .
Решение состоит в том, чтобы оба значения были строками.У меня также есть предпочтение COALESCE()
(потому что это стандартная функция).Итак:
COALESCE(CAST(ABColumn as VARCHAR(255)), '--') as ABCColumn