sql语句,能够截取指定字段后面的一个字符串吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql语句,能够截取指定字段后面的一个字符串吗?相关的知识,希望对你有一定的参考价值。
sql语句,能够截取指定字符串后面的一个字符串吗? 如“asdf qwer zxcv 1234",我指定字符串”qwer“ 能写条sql找到”zxcv“吗??(其中zxcv长度不固定,以空格区分字符串)
其中qwer出现的次数也不止一次。。。能实现吗?
可以的,需要用到charindex函数和substring函数。
CHARINDEX函数常常用来在一段字符中搜索字符或者字符串。
substring
public String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。
扩展资料:
1 <scripttype="text/javascript">
2 var str="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不是从空格开始。
参考资料来源:百度百科-CHARINDEX
百度百科-substring
sql语句可以截取指定字段后面的字符串,以sqlserver为例,需要用到charindex函数和substring函数。
如test表中有如下数据,要求截图str字段中逗号后边的内容。
可用如下语句:
select id,substring(str,charindex(',',str)+1,len(str)-charindex(',',str)) from test;结果截图:
charindex函数说明:
语法:
CHARINDEX ( expression1 , expression2 , [ start_location ] )
参数:
expression1
一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。
expression2
一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。
start_location
在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。
substring函数说明:
语法:
substring( expression, start, length)
参数:
expression
字符串、二进制字符串、文本、图像、列或包含列的表达式
start
整数或可以隐式转换为 int 的表达式,指定子字符串的开始位置
length
整数或可以隐式转换为 int 的表达式,指定子字符串的长度
返回字符串中指定表达式的起始位置。
语法
CHARINDEX ( expression1 , expression2 [ , start_location ] )
参数
expression1
一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。
expression2
一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。
start_location
在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。
例如:SELECT CHARINDEX( 'you ', 'I love you ')
你利用一下就能实现。至于多个可以循环截取字符串。 参考技术C --这个查询需要注意的是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本回答被提问者采纳 参考技术D 能实现的,这个又不难,你用什么数据库的,每个数据库的sql语法是不一样的,函数也是不一样的追问
我用的是sql server,有什么方法?指定的字符串可能出现多次,要找出所有的后面一个不定长的字符串,以空格区分
sql语句,如何截取指定字段某一个字符出现后的后面的字符串吗?
sql语句,能够截取指定字符串后面的一个字符串吗?
如下图:
dasf.sdf
dergre.adsf.lfs
ljjdf.ljfjl
想要得到第一个.后面的字符串内容
sdf
adsf.lfs
ljfjl
SQL语句写法如下,str为字段名称:
select
id, substring
(str,charindex(
‘,‘
,str)+1,len(str)-charindex(
‘,‘
,str))
from
test;
如果中间间隔为-,则sql语句为
select
id, substring
(str,charindex(
‘-‘
,str)+1,len(str)-charindex(
‘-‘
,str))
from
test;
以上是关于sql语句,能够截取指定字段后面的一个字符串吗?的主要内容,如果未能解决你的问题,请参考以下文章
sql语句,如何截取指定字段某一个字符出现后的后面的字符串吗?
sql语句,如何截取指定字段某一个字符出现后的后面的字符串吗