【发布时间】:2025-12-02 04:35:01
【问题描述】:
我有一张这样的桌子:
id name
001to005 ABC
006to210 PQR
211to300 XYZ
这不是最终表,我可以按照我想要的方式制作...所以我想在 id 上查找此数据并提取名称,例如 id 是否在 001-005 范围内然后是 ABC,如果 id 是在 006-010 范围内 .... 然后命名为 XYZ。
我的方法是,将 id 作为正则表达式存储在表中,如下所示:
id name
[0][0][1-5] ABC
[0-2][0-9][0-9] PQR
[2-3][0-9][0-9] XYZ
然后查询:
select * from table where '004' ~ id
此查询将返回正确的 ABC,但当范围变大时,我的输入值可能位于第 2 行和第 3 行。 例如:
select * from table where '299' ~ id
此查询将产生 2 行,所以我的问题是使用什么 reg exp 使其更具限制性,或者是否有任何其他方法可以解决此问题:
【问题讨论】:
标签: sql postgresql range