最近项目中遇到一个小问题:
需要从数据库中取出对应数据,并根据某个字段中的前半段内容进行排序,搜索资料后得以解决,现将解决方法记录如下:
最初的查询SQL:
SELECT file_name,sort
FROM base_annexesfile
ORDER BY file_name,sort
结果截图:
截取file_name字段中前半段数据的SQL:
SELECT file_name,
,SUBSTRING_INDEX(file_name,'_',1) AS type
,sort
FROM base_annexesfile
ORDER BY file_name,sort
结果截图:
按照截取的file_name字段的前半段数据及sort字段共同排序的SQL:
SELECT file_name,
,SUBSTRING_INDEX(file_name,'_',1) AS type
,sort
FROM base_annexesfile
ORDER BY SUBSTRING_INDEX(file_name,'_',1),sort
结果截图:
分别截取file_name字段的前半段和后半段字符作为新的字段显示的SQL:
SELECT file_name,
,SUBSTRING_INDEX(file_name,'_',-1) AS type1
,SUBSTRING_INDEX(file_name,'_',1) AS type2
,sort
FROM base_annexesfile
ORDER BY SUBSTRING_INDEX(file_name,'_',1),sort
结果截图:
文章来源:https://www.toymoban.com/news/detail-432778.html
总结:
1、MySQL的写法:
(1)获取“_”字符后面的字符串:
SUBSTRING_INDEX(字段名,'_',-1)
(2)获取“_”字符前面的字符串:
SUBSTRING_INDEX(字段名,'_',1)
2、SQL Server的写法:
--SUBSTRING('列名',起始位数,要取的字符串长度)
SUBSTRING(expression,start,length)
(1)获取“_”字符前面的字符串:
SUBSTR(字段名, INSTR(TCID_GK,'_',1,1)+1)
(2)获取“_”字符后面的字符串:
SUBSTRING(TCID_GK,CHARINDEX('_',TCID_GK)+1,len(TCID_GK)-charindex('_',TCID_GK))
3、oracle的写法:
SUBSTR(TCID_GK,1, INSTR(TCID_GK,'_')-1)
(1)获取“_”字符后面的字符串:
SUBSTR(TCID_GK, INSTR(TCID_GK,'_',1,1)+1)
(2)获取“_”字符前面的字符串:
SUBSTR(TCID_GK,1, INSTR(TCID_GK,'_')-1)
参考链接:https://zhuanlan.zhihu.com/p/355927358文章来源地址https://www.toymoban.com/news/detail-432778.html
到了这里,关于SQL语句截取字段某指定字符的前半段/后半段内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!