【发布时间】:2017-07-31 08:46:51
【问题描述】:
我想问一下如何在不得到NULL 的情况下将nvarchar 列与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
此查询仅在 value 不为 null 时返回正确的插入。如果值为 null,则返回带有“NULL”的插入,这是不正确的,因为它将作为 varchar 而不是作为 null 值插入。如果我删除“”,整个结果将变为空。
【问题讨论】:
-
在执行查询之前不能检查
keyNames是否为空吗? -
@JoshuaDuxbury 如果我删除它,整个结果将为空。那是因为 + 在数学中工作,愚蠢的 sql server 试图将 NULL 添加到字符串的其余部分,因此导致 NULL。
-
我明白了,
keyNames来自 tblParamaterKey 表吗? -
对不起,
keyNames来自哪里? -
@JoshuaDuxbury 是的,它是该表的列。
标签: sql-server-2008 select-insert