我正在构建动态SQL语句。我正在检查null值,如果值不是null,则在参数值周围放置单引号。在下面的@TEST_GU
中是一个字符串参数。
BEGIN TRAN
DECLARE @SQL nvarchar(max)
SELECT @SQL = 'UPDATE [THIS IS A TABLE]
SET [TEST_GU]=' + '''' + ISNULL(@TEST_GU,'') + ''''+',
+ ' SELECT [TEST_GU] FROM
[THIS IS A TABLE]
WHERE [TEST_GU] =' + '''' + ISNULL(@TEST_GU,'') + '''' +''
PRINT LEN(@SQL)
EXEC (@SQL)
COMMIT
这是不起作用的,因为如果它是null,它最终会在空值周围放置引号,从而使整个语句变得不格式化。因此,我的问题是,在上述格式中,如果null使用ISNULL
方法的第二个参数(在本例中为空''),是否可以检查空值。如果不是null,则将参数值放在单引号中。
发布于 2014-03-20 13:24:33
只需将引号放入isnull()
SELECT @SQL = 'UPDATE [THIS IS A TABLE]
SET [TEST_GU]=' + '''' + ISNULL(''''+@TEST_GU+'''','') + ''''+',
+ ' SELECT [TEST_GU] FROM
[THIS IS A TABLE]
如果值为NULL
,则级联将返回NULL
,因此它仍然可以满足您的需要。
https://stackoverflow.com/questions/22545261
复制相似问题