Поиск только цифр в колонке mysql

Можно ли в sql осуществить поиск только по цифрам в колонке. Пример нужно найти телефон 380991234567, а базе он лежит в таком виде +38(099) 123-45-67


Ответы (1 шт):

Автор решения: Zhihar

вариантов куча, к примеру

использовать регулярное выражение чтобы оставить только цифры (правда mysql8 нужен)

SELECT * FROM mytable WHERE REGEXP_REPLACE(phone,'[^0-9]+',"") = '380991234567'

для остальных случаев народ советует просто создать функцию, которая будет оставлять только цифры:

DROP FUNCTION IF EXISTS STRIP_NON_DIGIT;
DELIMITER $$
CREATE FUNCTION STRIP_NON_DIGIT(input VARCHAR(255))
   RETURNS VARCHAR(255)
BEGIN
   DECLARE output   VARCHAR(255) DEFAULT '';
   DECLARE iterator INT          DEFAULT 1;
   WHILE iterator < (LENGTH(input) + 1) DO
      IF SUBSTRING(input, iterator, 1) IN ( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ) THEN
         SET output = CONCAT(output, SUBSTRING(input, iterator, 1));
      END IF;
      SET iterator = iterator + 1;
   END WHILE;
   RETURN output;
END
$$
→ Ссылка