如何从select查询提交的mysql表中返回字符串的一部分?

时间:2017-08-26 08:08:33

标签: mysql database select

我在channel表中提交了mysql,其中包含以下数据:

DAHDI/69-1
DAHDI/68-1
DAHDI/20-1
DAHDI/1-1 
DAHDI/6-1 
DAHDI/67-1
DAHDI/14-1
DAHDI/4-1 
DAHDI/19-1
DAHDI/20-1

从上面的数据我想在正斜杠之后和-1之前获取数值。

预期结果:

仅从DAHDI/69-169

请注意,DAHDI1channel提交的固定值。

已编辑:我预计最多100行包含数百万行的最大数值。

1 个答案:

答案 0 :(得分:1)

您必须在字符串中找到字符索引,然后执行简单计算以提取值。查询应该类似于:

SELECT 0 + substring(channel, 
                     locate('/', channel) + 1, 
                     locate('-', channel) - locate('/', channel) - 1) AS myvalue
FROM table
ORDER BY myvalue DESC
LIMIT 100

SUBSTRING(str,pos,len)
从字符串str返回一个子字符串len个字符,从位置pos开始。

LOCATE(substr,str)
返回字符串str。

中第一次出现的substring substr的位置

0 +技巧强制MySql将字符串转换为数字值。