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
Другие вопросы по тегам