Select @Script returns NULL 而不是@Script SQL
Select @Script returns NULL instead of @Script SQL
我在处理以下查询时遇到了一些问题:
DECLARE
@Type TINYINT = NULL,
@ErrorDescription VARCHAR(MAX) = NULL
SELECT @Type
DECLARE @Script VARCHAR(MAX) = ''
SET @Script =
'DECLARE @Type TINYINT = ' + CAST(@Type AS VARCHAR(10)) +'
DECLARE @ErrorDescription VARCHAR(MAX) = ' + CASE WHEN @Type = 1 THEN '''' + @ErrorDescription + '''' ELSE 'NULL' END
SELECT @Script
我的 @Type
将是以下三个值之一:Null、0、1
Null - 开始进程
0 - 成功的过程
1 - 错误进程
对于 0 我得到结果:
@Type
0
@Script
DECLARE @Type TINYINT = 0 DECLARE @ErrorDescription VARCHAR(MAX) = NULL
对于 NULL
和 1 我在 @Script
中得到 NULL
。
@Script
NULL
我需要 NULL
和 1 到 return @Script
的结果,就像 0 一样。
我检查了是否是 @Type
到 Varchar(10)
的转换问题,但没有效果。
我已经删除了撇号,但是 return 出现了错误或相同的结果。
我将 @ErrorDescription
更改为 'This is an error' 并且 return 编辑了 1 的正确结果但不是 NULL
。
提前致谢!
我在互联网上搜索过类似我的问题,但我看到一个 jQuery 问题和询问如何获得 NULL 结果的问题。
你可以把NULL
换成'unknown'
的意思
当您将 unknown
连接到一个字符串时,结果也是 unknown
(如果您将一个未知数量添加到一个已知数量,您现在就有一个未知数量)。您需要使用 IsNull()
尝试
+ CAST(isnull(@Type,'0') AS VARCHAR(10)) +
我在处理以下查询时遇到了一些问题:
DECLARE
@Type TINYINT = NULL,
@ErrorDescription VARCHAR(MAX) = NULL
SELECT @Type
DECLARE @Script VARCHAR(MAX) = ''
SET @Script =
'DECLARE @Type TINYINT = ' + CAST(@Type AS VARCHAR(10)) +'
DECLARE @ErrorDescription VARCHAR(MAX) = ' + CASE WHEN @Type = 1 THEN '''' + @ErrorDescription + '''' ELSE 'NULL' END
SELECT @Script
我的 @Type
将是以下三个值之一:Null、0、1
Null - 开始进程 0 - 成功的过程 1 - 错误进程
对于 0 我得到结果:
@Type |
---|
0 |
@Script |
---|
DECLARE @Type TINYINT = 0 DECLARE @ErrorDescription VARCHAR(MAX) = NULL |
对于 NULL
和 1 我在 @Script
中得到 NULL
。
@Script |
---|
NULL |
我需要 NULL
和 1 到 return @Script
的结果,就像 0 一样。
我检查了是否是 @Type
到 Varchar(10)
的转换问题,但没有效果。
我已经删除了撇号,但是 return 出现了错误或相同的结果。
我将 @ErrorDescription
更改为 'This is an error' 并且 return 编辑了 1 的正确结果但不是 NULL
。
提前致谢!
我在互联网上搜索过类似我的问题,但我看到一个 jQuery 问题和询问如何获得 NULL 结果的问题。
你可以把NULL
换成'unknown'
当您将 unknown
连接到一个字符串时,结果也是 unknown
(如果您将一个未知数量添加到一个已知数量,您现在就有一个未知数量)。您需要使用 IsNull()
尝试
+ CAST(isnull(@Type,'0') AS VARCHAR(10)) +