MySQL как не учитывать первый символ при выборке?
Появилась интересная задача - нужно при поиске на сайте не учитывать "0", если это первый символ в значении поля, по которому осуществляется поиск. Причем поиск должен осуществляться по точному совпадению, а не по вхождению через LIKE "%%".
Для начала нам нужно удалить этот первый "0" с поисковой фразы, это просто:
Но теперь нам нужно удалить этот первый "0" с поля, по которому осуществляется поиск в MySQL запросе.
В MySQL есть функция REPLACE но она заменяет все вхождения, а не только 1, который находится сначала.
В MySQL есть также функция REGEXP, но она только может найти с использованием регулярного выражения, но не заменить.
Идеальной была бы функция REGEXP_REPLACE но ее нету в MySQL
Решение:
IF ( LEFT(db_field, 1) != '0', db_field, CONCAT( REPLACE(LEFT(db_field, 1), '0', ''), SUBSTRING(db_field, 2, CHAR_LENGTH(db_field)) ) )
Пояснение:
Если "IF" первый символ не "0" "LEFT(db_field, 1) != '0'" то берем это поле и ничего не делаем.
Если же "0" то заменяем этот "0" на пусто "REPLACE(LEFT(db_field, 1), '0', '')", а также берем все символы кроме первого "SUBSTRING(db_field, 2, CHAR_LENGTH(db_field)" и объединяем все "CONCAT"
Добавить комментарий