gpt4 book ai didi

不为空时的Sql Case语句

转载 作者:行者123 更新时间:2023-12-04 13:33:20 25 4
gpt4 key购买 nike

我想根据表动态生成变量声明。
我的意思是,我想声明一个表的变量,每个变量必须与其列的类型相同
我正在做类似的事情,但结果仅在类型不是 int 时才有效

Select 'Declare @Doc' + COLUMN_NAME + ' '+DATA_TYPE+case(CHARACTER_MAXIMUM_LENGTH) when Null then ' '  else '(' +convert(varchar(12),CHARACTER_MAXIMUM_LENGTH) + ')' end 
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'Documentos'

我的结果是这样的
(No column name)
NULL
Declare @DocSerie varchar(5)
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
Declare @DocImporteLetras varchar(255)
Declare @DocMotivos text(2147483647)
NULL
Declare @DocDocumentosReferencia varchar(255)
NULL
NULL
Declare @DocAuditoriaIPC varchar(40)
NULL
NULL
Declare @DocAuditoriaIPM varchar(40)
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL

最佳答案

CASE x WHEN null THENCASE WHEN x = null THEN 相同.但是这样就没有什么等于 null 了。这意味着您总是得到 CASE 语句的 ELSE 部分。这意味着您试图将一个字符串与 NULL 连接起来,这总是会产生 NULL。

您需要 CASE WHEN x IS NULL THEN反而...

SELECT
'Declare @Doc'
+ COLUMN_NAME + ' '
+ DATA_TYPE
+ CASE WHEN (CHARACTER_MAXIMUM_LENGTH) IS Null then ' ' else '(' convert(varchar(12),CHARACTER_MAXIMUM_LENGTH) + ')' end
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Documentos'

关于不为空时的Sql Case语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9100207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com