mysql语句如何在字符串中“-”符号数量未知的情况下按照最后一个“-”分成两段取前段
时间: 2023-10-11 08:09:39 浏览: 25
可以使用 SUBSTRING_INDEX 函数结合 REVERSE 函数来实现。具体的语句如下:
```
SELECT SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(REVERSE('abced-123456-ABCD'), '-', 2)), '-', 1);
```
执行上述语句后,将返回 "abced-123456",即原字符串中最后一个 "-" 左侧的部分。
这个语句的具体做法是:
1. 使用 REVERSE 函数将原字符串反转。
2. 使用 SUBSTRING_INDEX 函数取反转后的字符串中最后一个 "-" 右侧的部分,即原字符串中最后一个 "-" 左侧的部分。
3. 再次使用 REVERSE 函数将上一步取出的字符串反转回来,即为最终结果。
这样做的好处是可以应对 "-" 符号数量未知的情况,而不用去考虑具体有多少个 "-"。
相关问题
mysql如何根据在字符串某个字符最后一个做字符串字段前段截取
你可以使用MySQL内置函数SUBSTRING_INDEX()来根据某个字符截取字符串的前半部分。该函数的语法为:
```
SUBSTRING_INDEX(str, delim, count)
```
其中,str是要进行截取的字符串,delim是分隔符,count指定截取的段数。
如果要根据某个字符最后一个位置截取前半部分,可以将count设置为-1。例如,假设你有一个字符串字段name,其值为"John Smith",你想要根据空格截取前半部分,可以使用以下SQL语句:
```
SELECT SUBSTRING_INDEX(name, ' ', -1) FROM your_table;
```
这将返回"John"作为结果。
mysql在sensor_name字段中查找最后一个 - 字符并根据查找的位置判断前段字符串为数字则返回后段否则返回前段
您好,针对您的问题,您可以使用MySQL中的SUBSTRING_INDEX函数和REVERSE函数来提取字符串字段中的最后一个"-"字符前后的字符串,并判断前半部分是否为数字。具体地,您可以使用以下的SQL语句来实现您的需求:
```
SELECT
CASE
WHEN SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(REVERSE(sensor_name), '-', 1)), '-', 1) REGEXP '^[0-9]+$'
THEN SUBSTRING_INDEX(sensor_name, '-', -1)
ELSE SUBSTRING_INDEX(sensor_name, '-', 1)
END AS result
FROM your_table;
```
其中,sensor_name是您要处理的字符串字段,your_table是您要查询的表名。这个SQL语句会根据字符串中最后一个"-"字符的位置,将字符串分为前后两段,并判断前半部分是否为数字,如果是数字,则返回后半部分,否则返回前半部分。
请注意将SQL语句中的sensor_name和your_table替换为您实际的字段名和表名。