天天看点

mysql截取字符串类型中最后一个下划线‘_’之前的字符串

需求如下:

给出主机名,例如`name=交换机_11楼研发中心_100.29`,`福利/保安/棉花_0.11`得到`交换机_11楼研发中心,福利/保安/棉花`这个名称。
           

实现方法:

利用

reverse()

函数,即反转字符串

方案:

先利用

reverse()

函数,将这些字符串翻转;

然后利用mysql的

substr()

来截取字符串;

截取了之后再用

reverse()

翻转过来即可。

mysql截取字符串类型中最后一个下划线‘_’之前的字符串

实现代码:

REVERSE(SUBSTR(REVERSE(h.`name`) FROM INSTR(REVERSE(h.`name`),'_')+1))
           

实例代码:

select h.`name` n,INSTR(REVERSE(h.`name`),'_') aa,
SUBSTR(REVERSE(h.`name`) FROM INSTR(REVERSE(h.`name`),'_')+1) a,
REVERSE(SUBSTR(REVERSE(h.`name`) FROM INSTR(REVERSE(h.`name`),'_')+1)) `name`
 from hosts h where h.`name` = '交换机_11楼研发中心_100.29' 
           

如果各位还有其他更好的实现方法,欢迎指教。

继续阅读