不要使用SUBSTRING_INDEX()
,因为它无法区分-
分隔符和用来表示负数的分隔符.
在提取最后/
位后的子字符串后,将其转换为数字.这将把字符串的开头解析为一个数字,并忽略其后的所有内容.因此,-22-10
将被解析为-22
.
mysql> SET @test := '25-10/23-10/22-10';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT 0 + substring_index(@test,'/',-1);
+-----------------------------------+
| 0 + substring_index(@test,'/',-1) |
+-----------------------------------+
| 22 |
+-----------------------------------+
1 row in set (0.00 sec)
mysql> set @test := '-25-10/-23-10/-22-10';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT 0 + substring_index(@test,'/',-1);
+-----------------------------------+
| 0 + substring_index(@test,'/',-1) |
+-----------------------------------+
| -22 |
+-----------------------------------+
1 row in set (0.00 sec)