2016-05-02 144 views
0

我有一個保存十六進制ID的varchar(40)列,我需要大寫的ID,如id_xxxx;其中xxxx是十六進制數字0-9 A-F 前3個字母必須小寫。大寫和小寫查詢過濾器

1)有一種方法可以獲得十六進制數字不是大寫的ID列表嗎?

2)有一種方法,使數據庫引擎把一個錯誤的ID喜歡ID_abc1id_ABC1

回答

1

打開所有值與此表達正確的情況下:

concat('id_', upper(substr(myHexId, 4))) 

live demo in SQLFiddle

要查找不在大寫所有十六進制值:

where substr(myHexId,4) != upper(substr(myHexId,4)) 

找到所有的格式不正確的值(無論是「ID_」或十六進制不正確):

where myHexId != concat('id_', upper(substr(myHexId, 4))) 
+0

會發生什麼,如果有不是有效的HEX號碼?我可以過濾它們並獲得一個列表嗎? –

+0

你想要什麼?你想查找所有不是正確格式的值嗎?不是六角?我爲答案增加了一些選項 – Bohemian