匹配包含十六进制范围的单元格

时间:2016-09-07 11:30:27

标签: sql postgresql hex

我正在尝试查询第1列包含非常随机元素的字符串的所有行。但是,字符串的最后两三个元素是十六进制值或十进制(0-255),如:

               Column 1              | Column 2
00000587-8bb4-4360-9b0b-79012c14aa6d |  1
00000541-1895-4b13-9de2-7be77dda5de6 |  2
000005db-da97-483d-9efb-69222bbc7b57 |  3

我需要获取第1列包含一个字符串的行,该字符串以十六进制值结尾,范围从e6到f2或0-255

通常会使用像where acc.accountid ilike '%e6'之类的东西,并对范围内的所有值重复一遍,但必须有更有效的方法吗?

2 个答案:

答案 0 :(得分:1)

核心方式是:

SELECT *
FROM my_table
WHERE ('x' || substring (col1 FROM length(col1) - 1))::bit(8)::integer
   BETWEEN 50 AND 200

答案 1 :(得分:0)

您可以匹配以下值列表:

field IN ('e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ef', 'eg', 'f0', 'f1', 'f2')

问候。