如何从逗号的值中获取行值
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
消除字符串开头和结尾的所有空格。
下面是我的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
消除字符串开头和结尾的所有空格。