Я пытаюсь написать функцию MySQL, которая использует CAST, но я получаю ошибки, которые не появляются, когда я выполняю тот же оператор приведения вне функции.
У меня есть таблица с числовыми значениямион также может содержать буквенные символы.
mysql> select * from runway;
+-------------+
| base_end_id |
+-------------+
| 009 |
| 01 |
| 01C |
| 01H |
| 01L |
| 01R |
| 01W |
| 02 |
| 02C |
| 02H |
| 02L |
| 02R |
| 02W |
+-------------+
Если я приведу это к целому числу, MySQL с радостью проигнорирует символы:
mysql> SELECT base_end_id, cast(base_end_id as SIGNED) from runway;
+-------------+-----------------------------+
| base_end_id | cast(base_end_id as SIGNED) |
+-------------+-----------------------------+
| 009 | 9 |
| 01 | 1 |
| 01C | 1 |
| 01H | 1 |
| 01L | 1 |
| 01R | 1 |
| 01W | 1 |
| 02 | 2 |
| 02C | 2 |
| 02H | 2 |
| 02L | 2 |
| 02R | 2 |
| 02W | 2 |
+-------------+-----------------------------+
Но если я сделаю то же самое в хранимой функции,Я получаю сообщение об ошибке:
mysql> SELECT base_end_id, ConvertRunway(base_end_id) from runway;
ERROR 1292 (22007): Truncated incorrect INTEGER value: '01C'
Функция ConvertRunway:
FUNCTION `ConvertRunway`(rwy varchar(10))
RETURNS int(11)
BEGIN
RETURN cast(rwy as SIGNED);
END
Как я могу использовать CAST в своей функции?