首页 > 解决方案 > 如何检查 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特定值的行

标签: sqlsql-servertsqlsql-server-express

解决方案


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

希望能帮助到你 :) 在此处输入图像描述


推荐阅读