我正在尝试编写一个使用CAST的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?