我想从主表中获取文本值,该表对应于另一个表中存储的字符串(主表userid列的逗号分隔字符串)
我正在尝试
select maritialtype from tblmastermaritialstatus where MaritalStatusId in(select MaritalStatusId from tblPartnerBasicDetail where userid=1)
maritalstatusid
中的 tblPartnerBasicDetail
是一个类似1,2,3
我收到错误
Msg 245,Level 16,State 1,Line 1转换时转换失败 varchar值'1,2,3'到数据类型tinyint。
如何解决它
答案 0 :(得分:0)
逗号分隔的nvarchar数据与逗号分隔的整数不同。
你正在做类似的事情:
WHERE 1 IN ("1,2,3")
1
是integer
,"1,2,3"
是string
(无法隐式转换)。因此,您收到了错误。
我建议您对数据进行规范化,以便不需要逗号分隔值。
从长远来看,这将为您节省很多问题。
但是,如果您希望坚持使用CSV,您可能会发现本文很有用:
http://www.nigelrivett.net/SQLTsql/InCsvStringParameter.html
特别检查fn_ParseCSVString
部分