gpt4 book ai didi

sql - T-SQL 如何将逗号分隔的数字字符串转换为整数

转载 作者:行者123 更新时间:2023-12-04 21:56:44 35 4
gpt4 key购买 nike

我收到错误消息“将 nvarchar 值 '23,24,3,45,91' 转换为数据类型 int 时转换失败。”错误似乎发生在 ON 子句上。 E.ID 是一个整数字段,而 F.LegalIssue 是一个由逗号分隔的整数的 varchar 字段。下面是带有该错误的代码。

SELECT F.[FDTitle], E.PrimaryOpID as [FD Primary OP ID], F.County as [FD County], F.Status as [FD Status], F.IssueDate as [FD Date]
FROM [dbo].[tbl_FinalDetMain] F
LEFT OUTER JOIN [dbo].[tbl_lk_Exemptions_FD] E ON E.ID = F.LegalIssue
WHERE F.[FDNbr] = '2013-0041'

我已经为 on 子句尝试了下面的代码,但它只返回一个整数值,而不是整个整数字符串。
E.ID = cast(LEFT(F.LegalIssue,PATINDEX('%[^0-9]%',F.LegalIssue)-1) as int)

结果应包括以逗号分隔的五个整数。

最佳答案

LegalIssue包含一串逗号分隔的数字,那么你真的需要一个关联表。缺少这一点,这是一种方便(但效率不高)的连接方式:

SELECT F.[FDTitle], E.PrimaryOpID as [FD Primary OP ID], F.County as [FD County],
F.Status as [FD Status], F.IssueDate as [FD Date]
FROM [dbo].[tbl_FinalDetMain] F LEFT OUTER JOIN
[dbo].[tbl_lk_Exemptions_FD] E
ON ','+F.LegalIssue+',' like '%,'cast(E.ID as varchar(255))+',%'
WHERE F.[FDNbr] = '2013-0041';

这会用逗号预先和后置列表以避免冲突,例如在“1,100,1000”中找到“10”。

关于sql - T-SQL 如何将逗号分隔的数字字符串转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18744391/

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