Почему MySQL CAST работает по-разному в хранимой функции? - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь написать функцию 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 в своей функции?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...