gpt4 book ai didi

将 varchar 值转换为数据类型 int 时,SQL Select Case Conversion 失败。

转载 作者:行者123 更新时间:2023-12-01 22:25:03 25 4
gpt4 key购买 nike

伙计们,我已经阅读了此问题的修复程序,但我有一个无法解决的变体。

首先下面的语法会抛出错误

 Case
when #TFs.lTFID = 1161165 then REPLACE(CONVERT(VARCHAR(11), cast([dCreatedUTC] as datetime), 106), ' ', '-')
when #TFs.lTFID = 1161166 then 'Administrator'
when #TFs.lTFID = 1161167 then ''
when #TFs.lTFID = 1161168 then AssetID
when #TFs.lTFID = 1161169 then ''
when #TFs.lTFID = 1161170 then ''
when #TFs.lTFID = 1161172 then ''
when #TFs.lTFID = 1161173 then ''
else CAST(#TFs.lTFID as varchar(20))
End 'Value'

如果我注释掉除了下面的“when”行之外的所有内容,它就会起作用。

 Case
when #TFs.lTFID = 1161165 then REPLACE(CONVERT(VARCHAR(11), cast([dCreatedUTC] as datetime), 106), ' ', '-')
/* when #TFs.lTFID = 1161166 then 'Administrator'
when #TFs.lTFID = 1161167 then ''
when #TFs.lTFID = 1161168 then AssetID
when #TFs.lTFID = 1161169 then ''
when #TFs.lTFID = 1161170 then ''
when #TFs.lTFID = 1161172 then ''
when #TFs.lTFID = 1161173 then ''*/
else CAST(#TFs.lTFID as varchar(20))
End 'Value'

关于如何格式化此查询以使所有“案例”都有效,有什么想法吗?

最佳答案

根据错误消息,CASE 表达式的结果被转换为 INT。此外,WHEN 的返回值已知为 VARCHARAssetID 除外,因此我认为这一定是一个 INT 值。

错误的发生是因为当使用 CASE 表达式时,所有的返回值必须是相同的数据类型。如果它们具有不同的数据类型,所有值都将转换为具有更高 data type precedence 的类型.

并且由于 INT 的优先级高于 VARCHAR,因此结果被转换为 INT,这导致了错误。要解决此问题,您还必须将 AssetID 转换为 VARCHAR(n)

Case
when #TFs.lTFID = 1161165 then REPLACE(CONVERT(VARCHAR(11), cast([dCreatedUTC] as datetime), 106), ' ', '-')
when #TFs.lTFID = 1161166 then 'Administrator'
when #TFs.lTFID = 1161167 then ''
when #TFs.lTFID = 1161168 then CAST(AssetID AS VARCHAR(20))
when #TFs.lTFID = 1161169 then ''
when #TFs.lTFID = 1161170 then ''
when #TFs.lTFID = 1161172 then ''
when #TFs.lTFID = 1161173 then ''
else CAST(#TFs.lTFID as varchar(20))
End 'Value'

关于将 varchar 值转换为数据类型 int 时,SQL Select Case Conversion 失败。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36299871/

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