Оптимизация

MySQL-функция очистки введённого номера от всех символов кроме английских букв и цифр

Можно обойтись без неё, если выполнять аналогичную очистку введённого пользователем номера в коде, вызывающем этот SQL-запрос - во многих языках программирования это можно сделать проще.

DROP FUNCTION IF EXISTS CLEAN_NUMBER;
DELIMITER $$
CREATE FUNCTION CLEAN_NUMBER(STR VARCHAR(105))
RETURNS VARCHAR(105) DETERMINISTIC
BEGIN
DECLARE LEN INT DEFAULT LENGTH(STR);
DECLARE I INT DEFAULT 1;
DECLARE NEWSTR VARCHAR(105) DEFAULT ;
DECLARE C CHAR;
WHILE I<=LEN DO
SET C = SUBSTR(STR, I, 1);
IF C >= 'a' AND C <= 'z' OR
C >= 'A' AND C <= 'Z' OR
C >= '0' AND C <= '9' THEN
SET NEWSTR = CONCAT(NEWSTR, C);
END IF;
SET I = I+1;
END WHILE;
RETURN NEWSTR;
END$$
DELIMITER ;

Пример использования

SET @ARL_DISPLAY_NR = '078 115 561';
SET @ARL_DISPLAY_NR = CLEAN_NUMBER(@ARL_DISPLAY_NR);
SELECT @ARL_DISPLAY_NR;


Функции и процедуры, используемые для преобразования базы данных

Функции необходимы при очистке БД от всех языков, кроме выбранного и всех регионов, кроме рабочего.

Фильтрование данных в таблицах по выбранному региону @COU_ID



Фильтрование данных в таблицах по языку @LNG_ID