sql - 如何检查 SQL Server 2008 表中字符串列中的 id
问题描述
我有一个表,它将其他表的整数 ID 存储为逗号分隔的字符串列。现在,我想在此表中查找在此字符串列中具有特定 ID 的所有行。
例子
InwardHeader
(
inhdrid numeric(18, 0),
inwardno numeric(10, 0),
inwarddt datetime,
item numeric(10),
qty numeric(18, 2)
)
StockOutward
(
Stkouthdrid numeric(18, 0),
stkoutno numeric(18, 0),
stkoutdt datetime,
item numeric(10),
inwardids varchar(100)
)
该列StockOutward.inwardids
包含多个逗号分隔的值InwardHeader.inhdrid
我想查找stockoutward
包含inwardheader.inhdrid
特定值的行
解决方案
首先,将 id 存储在以逗号分隔的字符串字段上并不是一个好习惯,您应该使用 1:N 关系,无论如何我为您准备了一个解决方案(经过测试),如下所示:
SELECT [Stkouthdrid]
,[stkoutno]
,[stkoutdt]
,[item]
,[inwardids]
FROM [test].[dbo].[StockOutward]
where CHARINDEX((
SELECT convert(varchar(10),[inhdrid])
FROM [test].[dbo].[InwardHeader]
where [inhdrid]=0), [inwardids]) > 0