2016-09-07 53 views
0

我想查詢列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'之類的東西,並對範圍內的所有值重複使用,但必須採用更有效的方式?

回答

0

可以匹配值以下列表:

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

問候。

1

鐵桿辦法是:

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

謝謝。有幾個後續問題......這是假定第1列中字符串的長度不變,並且是否也包含小數? –