2016-05-23 5 views
0

Как я могу проверить, является ли код varchar шестнадцатеричным в MySQL?MySQL - это hexadecimal

Что-то вроде функции ISHEX():

ISHEX('QWERT') // false 
ISHEX('12345') // true 
ISHEX('ABCDE') // true 
ISHEX('i+5=G') // false 

ответ

0

Как об использовании оператора REGEXP?

SELECT 'QWERT' REGEXP '^[0-9ABCDEF]+$'; -- 0 
SELECT '12345' REGEXP '^[0-9ABCDEF]+$'; -- 1 
SELECT 'ABCDE' REGEXP '^[0-9ABCDEF]+$'; -- 1 
SELECT 'i+5=G' REGEXP '^[0-9ABCDEF]+$'; -- 0 
+0

Отлично! Я не так много знаю о регулярных выражениях, могу ли я написать [0-9A-F]? – stramin

+1

Да, вы можете использовать его, он тоже работает. :) –

3

У MySQL есть классная небольшая функция, называемая UNHEX.

Я не пробовал это, но для кого-то, кто хочет, чтобы дать ему шанс и избежать регулярных выражений, вы можете использовать это:

SELECT !ISNULL(UNHEX('your string')); -- returns 0 since it failed unhexing 
SELECT !ISNULL(UNHEX('AF0B')); -- returns 1 since it succeeded