获取主表数据,获取错误

时间:2011-12-08 17:19:12

标签: sql-server

我想从主表中获取文本值,该表对应于另一个表中存储的字符串(主表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。

如何解决它

1 个答案:

答案 0 :(得分:0)

逗号分隔的nvarchar数据与逗号分隔的整数不同。

你正在做类似的事情:

WHERE 1 IN ("1,2,3")

1integer"1,2,3"string(无法隐式转换)。因此,您收到了错误。

我建议您对数据进行规范化,以便不需要逗号分隔值。

从长远来看,这将为您节省很多问题。


但是,如果您希望坚持使用CSV,您可能会发现本文很有用:

http://www.nigelrivett.net/SQLTsql/InCsvStringParameter.html

特别检查fn_ParseCSVString部分