ISNULL()关于价值,但如果不是空,则放行情

时间:2014-03-20 21:16:12

标签: sql-server tsql

我正在构建动态SQL语句。我正在检查空值,如果该值不为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,则将参数值放在单引号中。

1 个答案:

答案 0 :(得分:2)

只需将引号放在 isnull()

SELECT @SQL = 'UPDATE [THIS IS A TABLE]
SET [TEST_GU]=' + '''' + ISNULL(''''+@TEST_GU+'''','') + ''''+', 
+ ' SELECT [TEST_GU] FROM 
[THIS IS A TABLE]

如果值为NULL,则连接将返回NULL,因此它仍然可以执行您想要的操作。