如何检查SQL Server 2008表的字符串列中的ID

问题描述 投票:0回答:1

我有一个表,该表存储其他表的整数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作为特定值的行

sql sql-server tsql sql-server-express
1个回答
0
投票

首先,不是将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

希望有帮助:)enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.