如何从逗号的值中获取行值

How to get row value from comma's values

下面是我的Table XYZ数据

Sno  ProgramID    ProgramName
 1      1,2          CCE
 2      3,11         DDU

我想要像下面这样传递程序 ID 1 的输出

Sno  ProgramID    ProgramName

 1      1,2          CCE

我正在尝试如下查询

select * from XYZ  where ProgramID in('1')

上面的查询没有结果,我的问题是查询中的单值匹配。我不希望查询与精确值匹配

您的数据模型损坏了。您可以使用 LIKE:

做您想做的事
select *
from XYZ 
where ',' + ProgramID + ',' like '%,1,%';

也就是说,您应该明白为什么在一个字符串中存储多个值是错误的:

  • 数字应存储为数字,而不是字符串。
  • ID 应该正确声明外键引用,这是你不能用字符串做的。
  • SQL字符串处理能力差
  • 查询不能使用索引和分区,可能会混淆优化器。
  • 维护字符串以避免重复很棘手。
  • SQL 有一个 很棒的 数据类型用于存储列表。它被称为 table 而不是 string.

您可以使用:

 Select *  from XYZ  WHERE (',' + Rtrim(ProgramID) + ',') LIKE '%,1,%'

使用TRIM消除字符串开头和结尾的所有空格。