简体   繁体   English

使用Varchar SQL Server 2008的Concat NULL

[英]Concat NULL with Varchar SQL Server 2008

I would like to ask how can I concatenate a nvarchar column with NULL without getting NULL ? 我想问一下如何在不获取NULL情况下将nvarchar列与NULL连接起来? I would like to create an INSERT script using SELECT , but when any of the values is NULL , I get only NULL . 我想使用SELECT创建INSERT脚本,但是当任何一个值为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

This query returns correct insert inly when value is not null. 当value不为null时,此查询将返回正确的insert inly。 If value is null it returns insert with 'NULL' which is not correct because it will be inserted as varchar and not as null value. 如果value为null,则返回带有'NULL'的insert,这是不正确的,因为它将作为varchar而不是null值插入。 If I remove ' ' the whole result will become null. 如果删除'',则整个结果将为null。

Edit - Maybe put the NULLIF statement inside the query string that way it will be null instead of string null . 编辑-可能将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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM