① 3.sql字符串截取技巧
有时我们会临时写一些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' 截取第一个 '/' 之前的所有字符
② sql截取字符串并替换
前面的分隔符取%,后面的分隔符是什么?就是说,以什么为分截取的依据?
没消息了?只好乱猜一下
假设你后面的特征是“0-9”或左圆括号“(”,那么可以这样:
select
left(
substring(字段名,charindex('%',字段名)+1,len(字段名)) ,
patindex('%[0-9(]%',substring(字段名,charindex('%',字段名)+1,len(字段名) )+'0' )-1
)说明:
先按你的方法截取%后面的字串,
然后再从左侧开始,截取到含有数字或左圆扩号的字符前面一个字符。
考虑到如果后面没有数字或扩号的情况,后面预加了0字符,这样当后面没有要求的字符时,会取百分号后面的所有字符。
③ 简单SQL语句,如何截取指定分隔符前字符串
一、用到的函数:substring(' ', , )、charindex(' ',' ')
select SUBSTRING('[email protected]',1,charindex('@','[email protected]')-1)
1.substring(字符串表达式,开始位置,长度):
从一个指定字符串的指定位置截取制定长度的字符;
第一个参数表示被截取的字符串;
第二个参数表示要在第一个参数中开始截取的位置;
第三个参数表示要截取的长度。
例如:select substring('abc123',1,2) →返回ab
从字符串‘abc123’的第一个字符开始截取,共截取两个字符,最后得到‘ab’。
2.charindex(字符串表达式1,字符串表达式2[,整数表达式]):
在字符串2中查找字符串1,如果存在返回第一个匹配的位置,如果不存在返回0。如果字符串1和字符串2中有一个是null则返回null。
可以指定在字符串2中查找的起始位置。
例如:select charindex('ab','BCabTabD') → 返回3
select charindex('ab','BCabTabD',4) →返回6
二、用到的函数:left(' ', )、charindex(' ',' ')
select LEFT('[email protected]',charindex('@','[email protected]')-1)
1.left(字符串表达式,整数表达式):
从字符串表达式的最左边开始截取整数表达式个字符。
例如:select left('abcdef',3) →返回abc
④ SQL中求截取字符串语句
可以通过substring方法实现。
sql: select substring('123456789',5,2) from al;
解释:第一个参数表示要截取的字符串,第二个参数是起始位置,第三个参数是,截取的长度。
执行结果:56。
⑤ sql语句,能够截取指定字段后面的一个字符串吗
可以的,需要用到charindex函数和substring函数。
CHARINDEX函数常常用来在一段字符中搜索字符或者字符串。
substring
public String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。
(5)infomxsql截取字符串扩展阅读:
javascript示例
1 <scripttype="text/javascript">
2 varstr="Helloworld!"
3 document.write(str.substring(1,3));4 </script>上面返回字符串:"el";
str.substring(1,2) //返回e
str.substring(1) //返回"elloworld";
还有此函数中会出现奇怪的现象,当出现str.substring(5,0);
这又是怎么回事,不过返回的是"Hello",
str.substring(5,1) //返回"ello",截去了第一位,返回余下的.
可见substring(start,end),可以有不同的说明,即start可以是要返回的长度,end是所要去掉的多少个字符(从首位开始).
在JS中,substr(start,length),用得较方便.
CustomName包含客户的First Name和Last Name,它们之间被一个空格隔开。我们用CHARINDX函数确定两个名字中间空格的位置。通过这个方法,我们可以分析ContactName列的空格位置,这样可以只显示这个列的last name部分。
select top 5 substring(ContactName,charindex(' ',ContactName)+1,len(ContactName)) as [Last Name] from customers
CHARINDEX函数找到First Name和Last Name之间的空格,所以SUBSTRING函数可以分开ContactName列,这样就只有Last Name被选出。在CHARINDEX函数返回的整数上加1,这样Last Name不是从空格开始。
⑥ sql数据库截取字符串函数
Oracle中 其语法为:
substr函数的用法,取得字符串中指定起始位置和长度的字符串 ,默认是从起始位置到结束的子串。
substr( string, start_position, [ length ] ) substr('目标字符串',开始位置,长度)
如:
substr('This is a test', 6, 2) would return 'is'
substr('This is a test', 6) would return 'is a test'
substr('TechOnTheNet', -3, 3) would return 'Net'
substr('TechOnTheNet', -6, 3) would return 'The'select substr('Thisisatest', -4, 2) value from al
⑦ sql 截取字符串
简单的:
select substr(‘04.06.02.063-48-Z952’,1,instr(‘04.06.02.063-48-Z952’,'-',1,2)-1) from al ;
instr(04.06.02.063-48-Z952,'-',1,2)的意思是找到第二个出现的-号,然后减去1,把左边都截取下来就ok了。
实际使用的时候,用字段名替换那个字符串就ok了。
希望帮到你,请采纳最佳。
⑧ 【搬运】Sql Server中截取字符串的常用方法
1、LEFT() 从左边截
语法:LEFT(character,integer) 返回 从字符串左边开始 指定个数的字符
说明:参数1:要截取的字符串,参数2:截取字符个数
示例:selectLEFT('SqlServer_2008',3)
结果:Sql
2.RIGHT() 从右边截
语法:RIGHT(character,integer) 返回 从字符串右边开始 指定个数的字符
说明:参数1:要截取的字符串,参数2:截取字符个数
示例:selectLEFT('SqlServer_2008',4)
结果:2008
3.SUBSTRING() 中间截
语法:SUBSTRING(character,start,length) 返回从字符串 中间 的字符
说明:参数1:要截取的字符串,参数2:开始截取的位数,参数3:要截取的字符长度
示例:selectSUBSTRING('SqlServer_2008',4,6)--4)
结果:Server
以上。
https://www.cnblogs.com/xielong/p/7670757.html
感谢二位!