截取字符串sql
❶ sql中where截取字符串字符
不管哪个库,sql中一般都支持substring 或者它的变种 substr left right mid等
❷ 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 SERVER 字符串截取
1.将字符串中从某个字符开始截取一段字符,替换成另一字符
select stuff('helloworld!',4,4,'****')
hel****rld!
2.指定字符串起始位置,截取指定长度
select substring('helloworld!',4,5)
lowor
3.替换指定字符串
select replace('helloworld!','ld','aa')
helloworaa!
4.去除字符串两端空格
select ltrim(' helloworld!')
helloworld!
5.用0替换NULL【isnull( )】
select ISNULL(KCRKD2_SCDDLS,0) from KCRKD2
返回0
6.取字符串,再转化为整数
select convert(float,substring(xsddmx_wlbh,6,3)) from XSDDMX
7.字符串前三个是固定的,后面长度是变化的用LEN()取字符串长度,去掉前三个字符(截取右端固定字符数换成LEFT)
SELECT RIGHT(KCRKD3_JH,LEN(KCRKD3_JH)-3) FROM KCRKD3
返回B160459B01487
8.从‘-’向后截取8位字符(charindex()返回字符位置)
select SUBSTRING('E03AHJC-E1701005020184',charindex('-','E03AHJC-E1701005020184')+1,8)
9. replace将‘h’替换
SELECT REPLACE('Hello,World!','h','2') 2ello,World!
SELECT REPLACE('Hello,World!','h','') ello,World!
SELECT REPLACE('Hello,World!',' ','2') Hello,World!
10.复制字符
select REPLICATE('Hello,World!',3)
时间函数
1.截取两个时间的时间差
select DATEDIFF(D,TMBASE_DATE,GETDATE()) from TMBASE
❹ 如何从多个位置截取字符串的SQL语句
SQL 中从多个位置截取字符串,需要配合left,right,rtrim三个函数来实现。
一、函数语法:
1、left()
LEFT (<character_expression>, <integer_expression>)
返回character_expression 左起 integer_expression 个字符。
2、RIGHT()
RIGHT (<character_expression>, <integer_expression>)
返回character_expression 右起 integer_expression 个字符。
3、LTRIM(character_expression) 把字符串character_expression头部的空格去掉。
4、RTRIM(character_expression) 把字符串character_expression尾部的空格去掉。
二、代码实例:
图中以:表a,ID为2,C列的值“12345678”为例:
其中最后一句中的right(rtrim(c),1),是因为字符只有8位,在right函数中,系统自动按C列定义的长度使用空格补足。也就是说如果是right(c,1)返回空字符“”,所以使用rtrim(c)把右边空格删除。
❺ sql 如何截取一个字段里某一字符串中间的字符
--这个查询需要注意的是qwer后的需要查询的字符串必须是一个空格,不能有的是一个空格有的是两个。也就是格式要固定。
--定义参数
create table #a (string varchar(max))
declare @sql varchar(max)
declare @a varchar(max)
select @a ='asdf qwer zxcv 1234 qwer yuchor 3452 qwer abcd 7893'--这个是要查询的字符串
---------------------------查询qwer后面的字符串----------------------------------------
while charindex('qwer',@a)<>0
begin
select @a=SUBSTRING ( @a,charindex('qwer',@a)+5,LEN(@a)-charindex('qwer',@a)-4)
insert into #a values (@a)
end
select SUBSTRING (LTRIM ( string) ,1,charindex(' ',LTRIM ( string))) as result from #a
--查询结果
result
zxcv
yuchor
abcd
❻ sql数据库截取字符串函数
SQL截取字符串函数:
A.截取从字符串左边开始N个字符
以下是代码片段:
Declare
@S1
varchar(100)
Select
@S1='http://www.xrss.cn'
Select
Left(@S1,4)
------------------------------------
显示结果:
http
B.截取从字符串右边开始N个字符(例如取字符www.163.com)
以下是代码片段:
Declare
@S1
varchar(100)
Select
@S1='http://www.163.com'
Select
right(@S1,11)
------------------------------------
显示结果:
www.163.com
C.截取字符串中任意位置及长度(例如取字符www)
以下是代码片段:
Declare
@S1
varchar(100)
Select
@S1='http://www.xrss.cn'
Select
SUBSTRING(@S1,8,3)
------------------------------------
显示结果:
www
以上例子皆是已知截取位置及长度,下面介绍未知位置的例子
2.截取未知位置的函数
A.截取指定字符串后的字符串(例如截取http://后面的字符串)
方法一:
以下是代码片段:
Declare
@S1
varchar(100)
Select
@S1='http://www.xrss.cn'
Select
Substring(@S1,CHARINDEX('www',@S1)+1,Len(@S1))
------------------------------------
显示结果:
www.163.com
需要注意:CHARINDEX函数搜索字符串时,不区分大小写,因此CHARINDEX('www',@S1)也可以写成CHARINDEX('WWW',@S1)
方法二:(与方法一类似)
以下是代码片段:
Declare
@S1
varchar(100)
Select
@S1='http://www.xrss.cn'
Select
Substring(@S1,PATINDEX('%www%',@S1)+1,Len(@S1))
--此处也可以这样写:Select
Substring(@S1,PATINDEX('%//%',@S1)+2,Len(@S1))
------------------------------------
显示结果:
www.163.com
函数PATINDEX与CHARINDEX区别在于:前者可以参数一些参数,增加查询的功能
方法三:
以下是代码片段:
Declare
@S1
varchar(100)
Select
@S1='http://www.xrss.cn'
Select
REPLACE(@S1,'http://','')
------------------------------------
显示结果:
www.163.com
利用字符替换函数REPLACE,将除需要显示字符串外的字符替换为空
方法四:
以下是代码片段:
Declare
@S1
varchar(100)
Select
@S1='http://www.xrss.cn'
Select
STUFF(@S1,CHARINDEX('http://',@S1),Len('http://'),'')
------------------------------------
显示结果:
www.163.com
函数STUFF与REPLACE区别在于:前者可以指定替换范围,而后者则是全部范围内替换
B.截取指定字符后的字符串(例如截取C:\Windows\test.txt中文件名)
与A不同的是,当搜索对象不是一个时,利用上面的方法只能搜索到第一个位置
方法一:
以下是代码片段:
Declare
@S1
varchar(100)
Select
@S1='C:\Windows\test.txt'
select
right(@S1,charindex('\',REVERSE(@S1))-1)
-------------------------------------
显示结果:
text.txt
利用函数REVERSE获取需要截取的字符串长度
❼ 【搬运】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
感谢二位!
❽ sql语句,如何截取指定字段某一个字符出现后的后面的字符串吗
工具/材料:Management Studio。
1、首先在桌面上,点击“Management Studio”图标。
❾ sql server截取某个特定字符前的字符串
left(列名,charindex(特定字符,列名)-1)
left:返回从左边开始指定字符串
charindex:找到特定并返回字符所在位置
select left(case_name,charindex('_',case_name)-1) from table1 where charindex('_',case_name)-1 > 0
注意:不加where后面的条件会报 “传递给 LEFT 或 SUBSTRING 函数的长度参数无效”的错误。