这里介绍的是mysql数据库使用sql语句实现取括号前面的内容,如果字段里面没有括号就回直接取原内容!!!
也就是向这样的数据,我这里只查role_name这个字段的信息!(因为不是一个表,所有sql语句中是name字段的信息)
方法一:
这里使用 SUBSTR
函数 + LOCATE
函数一步一步查
SELECT SUBSTR(NAME, 1, LOCATE('(', NAME) - 1) AS content FROM `zzy_wg_area`
sql的SUBSTR
里面NAME:字段名称 1:开始位置 -1:是要提取的长度
sql的LOCATE
里面'(':为我们要取的括号前半部分 NAME:是要在其中搜索的字符串
如果看不懂人写的,就看下面👇的图片
把上面的sql语句跑一下,你会发现只是查询了,带括号的内容值,没有带括号的返回空白!
!!!!如果啥也没返回,请注意一下,你自己的前半括号是英文的还是中文的!!!!!
然后使用 case when 来获取剩下的:
先说case when用法:
然后自己修改下面的sql语句:
SELECT
CASE
WHEN LOCATE('(', NAME) > 0 THEN SUBSTR(NAME, 1, LOCATE('(', NAME) - 1)
ELSE NAME
END AS content
FROM `zzy_wg_area`
注意:我这里查的是在zzy_wg_area表里面查name字段, 你们自己的自己改!
方法二:
直接一下查完:
SELECT SUBSTRING_INDEX(NAME, '(', 1) AS content FROM zzy_wg_area
如果查不出来,一定要留心看一下括号是英文or中文;我就是写错了导致方法二认为查不出来
注意:我这里查的是在zzy_wg_area表里面查name字段, 你们自己的自己改!
两个方法最终得到的样子: