Любая помощь здесь будет оценена!
Мне нужна функция в MySQL, как у меня здесь, в моих PHP-библиотеках, я называю это «onlyNumbers», эта функция зацикливает все номера фильтрации строк и объединяет их как возвращаемую строку.
Я мог бы следовать логике синтаксиса MySQL и воспроизвести это, как вы видите ниже, но чего-то не хватает, я думаю, трюк или какой-то простой шаг, который не приходит мне в голову.
При запуске этого в MySQL функция создается, но когда я вызываю ее, я получаю эту ошибку: # 2014 - Команды не синхронизированы; вы не можете запустить эту команду сейчас
Вот мой код функции:
DROP FUNCTION IF EXISTS ONLY_NUMBERS; DELIMITER $$ CREATE FUNCTION ONLY_NUMBERS(_STR TEXT) RETURNS TEXT DETERMINISTIC BEGIN DECLARE NUMBERS TEXT; DECLARE _STR_CHAR CHAR(1) DEFAULT NULL; DECLARE _STR_POS BIGINT(20) DEFAULT 0; DECLARE _STR_INIT BIGINT(20) DEFAULT 0; DECLARE _STR_ENDS BIGINT(20) DEFAULT 0; SET _STR_ENDS = CHAR_LENGTH(_STR); STRING_LOOP: LOOP IF _STR_POS = STR_ENDS THEN LEAVE STRING_LOOP; END IF; SET _STR_CHAR = SUBSTR(_STR,_STR_POS,1); IF _STR_CHAT REGEXP '^[0-9]$' THEN SET NUMBERS = CONCAT(NUMBERS, _STR_CHAR); END IF; SET _STR_POS = _STR_POS + 1; ITERATE STRING_LOOP; END LOOP STRING_LOOP; RETURN NUMBERS; END $$ DELIMITER ;
Когда я вызываю SELECT ONLY_NUMBERS('sadfasdf3423452345234'); я ожидаю увидеть в результате 3423452345234