Concat NULL с Varchar SQL Server 2008
Я хотел бы спросить, как я могу объединить nvarchar
колонка с NULL
не получая NULL
? Я хотел бы создать INSERT
использование сценария SELECT
, но когда любое из значений NULL
Я получаю только NULL
,
SELECT TOP 10
'IF NOT EXISTS(SELECT 1 FROM tblParameterKey
WHERE keyNames='''
+ CAST(ISNULL([keyNames], 'NULL') AS NVARCHAR(255)) + ''')
BEGIN
INSERT INTO tblParameterKey VALUES(''' + CAST(ISNULL([keyNames], 'NULL') AS NVARCHAR(255))+''')
END'
FROM tblParameterKey
Этот запрос возвращает правильную вставку inly, когда значение не равно нулю. Если значение равно нулю, оно возвращает вставку с NULL, что неверно, поскольку оно будет вставлено как varchar, а не как нулевое значение. Если я удалю ' ', весь результат станет нулевым.
1 ответ
Решение
Редактировать - Может быть, поставить NULLIF
оператор внутри строки запроса, таким образом, это будет null
вместо string null
,
SELECT TOP 10
'IF NOT EXISTS(SELECT 1 FROM tblParameterKey
WHERE keyNames=NULLIF('''
+ [keyNames] + ''', 'NULL') AS NVARCHAR(255))
BEGIN
INSERT INTO tblParameterKey VALUES(NULLIF(''' + [keyNames]+''', 'NULL') AS NVARCHAR(255))
END'
FROM tblParameterKey