Я получил подсказку от O.jones и пошел создавать хранимую функцию.
Вот что я создал:
РАЗДЕЛИТЕЛЬ $$ CREATE FUNCTION change_int (colres VARCHAR (500)) ВОЗВРАЩАЕТ INT (11)
BEGIN
DECLARE res int(11);
DECLARE leng int(11);
DECLARE newres int(11);
DECLARE mult int(11);
DECLARE temp1 int(11);
DECLARE temp2 int(11);
SET res = CAST(colres AS UNSIGNED);
SET leng = CHAR_LENGTH(CAST( colres AS CHAR));
SET newres = 0;
SET mult = 1;
SET temp1 = 0;
SET temp2 = 0;
WHILE (res > 0) DO
SET temp1 = MOD(res , 10 );
SET res = (res DIV 10);
SET temp2 = MOD(res , 10 );
SET newres = (newres +((temp1 + temp2 ) * mult));
SET mult = mult*10;
END WHILE;
SET newres = SUBSTRING (newres, 1, leng );
RETURN newres;
END $$
DELIMITER ;
Но яя получаю сообщение об ошибке при запуске в строке 6:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''res' = CAST(colres AS CHAR)' at line 6
Добавлен разделитель, новая ошибка:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET newres = SUBSTRING (newres, 1, leng );
RETURN newres;
END' at line 27
Величина теперь работаетНо я не могу вызвать ее:
Запустил тест с:
SHOW FUNCTION STATUS;
И он существует.
Когда я пытаюсь запустить его так:
UPDATE `table` SET `col1` = function_name(`col1`);
Также пробовал:
UPDATE `table` SET `col1` = db.function_name(`col1`);
Не повезло.