3.SQL字符串截取技巧

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.SQL字符串截取技巧相关的知识,希望对你有一定的参考价值。

参考技术A        有时我们会临时写一些SQL脚本来统计一些东西,或者是提供视图或者存储过程给第三方使用。但是有些内容是串联起来存在一个字段中的。

比如:sMZ(民族)      sLx(联系方式)

              01/汉族            tel:123456/qq:87654321/phone:13812345678

SELECT SUBSTRING('01/汉族',4,2)   汉族

SELECT RIGHT('01/汉族',2)   汉族  --也是一样的 

取民族很简单 如果要取手机号phone 就比较麻烦了,因为我们不知道QQ是几位的

或者qq电话可能没有填写了,单纯依靠字段长度截取不了的。

这样就需要变通下了:

SELECT SUBSTRING('tel:123456/qq:87654321/phone:13812345678',

charindex('/phone','tel:123456/qq:87654321/phone:13812345678')+1,1000)

使用charindex获取'/phone'字符的其实位置 嵌套SUBSTRING截取

如果在mysql中还可以这样:

substring_index('tel:123456/qq:87654321/phone:13812345678', '/', -1) 

'phone:13812345678' 截取第一个 '/' (倒数)之后的所有字符

substring_index('tel:123456/qq:87654321/phone:13812345678', '/', 1) 

'tel:123456' 截取第一个 '/' 之前的所有字符

MySql字符串函数使用技巧

1、从左开始截取字符串 
left(str, length) 
说明:left(被截取字段,截取长度) 
例:select left(content,200) as abstract from my_content_t 


2、从右开始截取字符串 
right(str, length) 
说明:right(被截取字段,截取长度) 
例:select right(content,200) as abstract from my_content_t 


3、截取字符串 
substring(str, pos) 
substring(str, pos, length) 
说明:substring(被截取字段,从第几位开始截取) 
substring(被截取字段,从第几位开始截取,截取长度) 
例:select substring(content,5) as abstract from my_content_t 
select substring(content,5,200) as abstract from my_content_t 
(注:如果位数是负数 如-5 则是从后倒数位数,到字符串结束或截取的长度) 


4、按关键字截取字符串 
substring_index(str,delim,count) 
说明:substring_index(被截取字段,关键字,关键字出现的次数) 
例:select substring_index("blog.jb51.net","。",2) as abstract from my_content_t 
结果:blog.jb51 
(注:如果关键字出现的次数是负数 如-2 则是从后倒数,到字符串结束) 

 

5、INSTR(str,substr) ;LOCATE(str,substr); POSITION(str IN substr) 

   返回子串substr在字符串str中的第一个出现的位置。这与有2个参数形式的LOCATE()相同,除了参数被颠倒。 

 

6、REVERSE(str)

  反转str; 

 

7、TRUNCATE(X,D);

返回被舍去至小数点后D位的数字X。若D 的值为 0, 则结果不带有小数点或不带有小数部分。可以将D设为负数,若要截去(归零) X小数点左起第D位开始后面所有低位的值.
今天正好有个需求,查询标准表中某2个字段的百分比....

示例:

select TRUNCATE(progress/video_duration,2) as percent  from mime_study_logs ;
video_duration字段即使(这里的分母为0或null),返回的也是null,而不用php计算验证除法的合法性

这里计算了两个数相除,2表示结果小数点后面的位数,比如:1/3 =0.33























以上是关于3.SQL字符串截取技巧的主要内容,如果未能解决你的问题,请参考以下文章

JS截取与分割字符串常用技巧总结

MySql字符串函数使用技巧

MySql字符串函数使用技巧

MySql字符串函数使用技巧

MySql字符串函数使用技巧

SQLServer常用个技巧:根据某字符截取后面的字符串,String转int