2015-10-23 3 views
-3

У меня есть база данных, где все данные в соответствующем столбце указаны в шестнадцатеричном формате. Говорят слово ABSENT. У нас есть данные в шестнадцатеричном формате 414453454e54MySQL NO CASE SENSITIVE Поисковые данные для ключевых слов с использованием LIKE, но данные находятся в шестнадцатеричном формате (не в текстовом формате)

Я хочу вести поиск записей с Specific текстом, что тоже в шестнадцатеричном формате (SELECT ..... LIKE «% 414453454e54%»

Как я искать записи для таких ключевых слов «414453454e54» в Неправительственный Случайный способ. Получение поиска для 414453454e54 (т.е. ОТСУТСТВУЮЩЕЕ) должно возвращать все записи, содержащие ОТСУТСТВИЕ, в любом случае (ABSENT, отсутствует) или в смешанном случае (Absent, abseNt) в шестнадцатеричном формате.

Я ПОЛУЧИЛ ИСПОЛЬЗОВАТЬ ВЕРХНЕЙ ЧАСТИ(), НИЖНЕЙ ЧАСТИ() И МНОГО ТАКИХ ВАРИАНТОВ, ДОСТУПНЫХ НА ЧЕТВЕРТОМ, НО НЕ СМОТРЕТЬ, ЧТОБЫ РАБОТАТЬ, КАК ЭТО В ГЕКСАДЕМИЧЕСКОМ ФОРМАТЕ.

В ожидании быстрого разрешения

+0

Простой ответ заключается в том, что вы не можете - потому что символы верхнего и нижнего регистра имеют разные числовые значения - так что шестнадцатеричные значения совершенно разные. Верхний регистр A - нижний регистр x41 - x61. Вам нужно будет преобразовать из шестнадцатеричного значения в строку и провести сравнение без учета регистра. – PaulF

+0

любой другой выход, и если nit, то как преобразовать в строку? –

ответ

1

Вы можете использовать unhex() метод MySQL и брось в символьном в ИНЕКЕ.

Как это:

SELECT 
    col 
FROM 
    table 
WHERE 
    CAST(UNHEX(col) AS CHAR) LIKE '%ABSENT%' 

Имейте в виду, однако, что это не очень производительность дружелюбным. Он может работать медленнее и медленнее, чем больше записей вашей таблицы.

+1

Да, это будет очень медленно, но это, наверное, самый чистый путь. Если вы используете MySQL 5.7+, одним из улучшений может быть использование сохраненного [сгенерированного столбца] (https://dev.mysql.com/doc/refman/5.7/en/create-table.html#create-table-generated -колонны), который, скажем, «UPPER (UNHEX (col))», а затем помещает на него индекс. Конечно, реальный ответ заключается не в том, чтобы хранить персональные данные, которые вы хотите искать в качестве шестнадцатеричного потока в первую очередь ... –