如何检查 SQL Server 2008 table 中字符串列中的 ID
How to check id in a string column in a SQL Server 2008 table
我有一个 table 将其他 table 的整数 ID 存储为逗号分隔的字符串列。现在,我想在此 table 中查找在此字符串列中具有特定 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
希望对您有所帮助:)
我有一个 table 将其他 table 的整数 ID 存储为逗号分隔的字符串列。现在,我想在此 table 中查找在此字符串列中具有特定 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
希望对您有所帮助:)