SELECT Id 'PatientId',
ISNULL(CONVERT(varchar(50),ParentId),'') 'ParentId'
FROM Patients
ISNULL
всегда пытается вернуть результат, который имеет такой же тип данных, что и тип его первого аргумента.Итак, если вы хотите, чтобы результат был строкой (varchar
), вам лучше убедиться, что это тип первого аргумента.
COALESCE
обычно лучше использовать функцию, чем ISNULL
, так как она учитывает все типы данных аргументов и применяет соответствующие правила приоритет для определения окончательного результирующего типа данных.К сожалению, в этом случае uniqueidentifier
имеет более высокий приоритет, чем varchar
, так что это не помогает.
(Это также обычно предпочтительнее, поскольку он распространяется на более чем два аргумента)