【发布时间】:2013-09-15 16:00:02
【问题描述】:
我收到错误“将 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)
结果应包含五个用逗号分隔的整数。
【问题讨论】:
-
请停止将逗号分隔的列表存储在单列中。你可能认为这是一个聪明而有用的设计,但它带来的问题多于解决的问题。数据库不是 JSON 容器!
标签: sql string comma delimited