我有下表
id | value |
-------------------------
1 | 1,2-5,6,9-1500,1505|
2 | 1,2,3,6,9 |我希望创建一个select查询,以检索数字X所属于value列中集合的所有行。
例如
SELECT id WHERE 3 BELONGS TO value
Output:
1
2或
SELECT id WHERE 1499 BELONGS TO value
Output:
1有没有一种方法可以不使用任何C#来创建这种类型的查询?
发布于 2017-09-12 18:03:20
正如对问题的注释中所建议的,通过将值范围存储在如下表的行中,可以避免许多混乱的字符串解析(例如,在存储过程或标量值函数中):
1> SELECT * FROM ValueRanges;
2> go
id StartValue EndValue
----------- ----------- -----------
1 1 6
1 9 1500
1 1505 1505
2 1 3
2 6 6
2 9 9
(6 rows affected)然后,只需查询匹配的id值,如下所示
1> SELECT id FROM ValueRanges WHERE 3 BETWEEN StartValue AND EndValue;
2> go
id
-----------
1
2
(2 rows affected)
1> SELECT id FROM ValueRanges WHERE 1499 BETWEEN StartValue AND EndValue;
2> go
id
-----------
1
(1 rows affected)https://stackoverflow.com/questions/46179784
复制相似问题