我需要一个SUBSTRING_INDEX查询的帮助,该查询能够从字符串中 Select 负数和正数.

两个示例字符串:

-25-10/-23-10/-22-10

25-10/23-10/22-10

在第一个字符串中,我希望返回-22和第二个字符串22.

如果结果是肯定的,则执行以下操作:

SET @test := '25-10/23-10/22-10';
SELECT substring_index(substring_index(@test,'/',-1),'-',1);

退货22

我还不能弄清楚它是消极的,更不用说积极和消极的工作了.

有什么主意吗?

推荐答案

不要使用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)

Mysql相关问答推荐

如何使RST(*)在巨大的数据集上快速执行?

优化使用ORDER BY加载耗时较长的MySQL请求

如何将左联接的小计/总计行中的所有列作废

仅获取我不是最后一个 comments 者的博客帖子

SQL Select 最大值和平均值

Mysql,从两个不同的表中添加原始数据,从第一个表中获取所有内容,仅从第二个表中获取curdate内容

如何更新一个巨大的表的 50k 行?

排序子查询结果并返回每个 ID 的第一行

访问 nodejs、mysql 和 json 中的嵌套对象数组

Mysql insert with loop out of select 语句

动态创建内联 SQL 表(用于排除左连接)

什么是 PyMySQL,它与 MySQLdb 有何不同?它会影响 Django 部署吗?

MySQL使用多列 Select 重复记录

MYSQL:创建表中的索引关键字以及何时使用它

MySQL:在 Select 语句中自动增加临时列

从mysql中的大表中快速 Select 随机行

MySQL 整数与日期时间索引

MySQL错误 1005 (HY000): 无法创建表 'foo.#sql-12c_4' (errno: 150)

MySQL:切换 int 字段值的简单方法

mysql GROUP_CONCAT 重复