sql语句,能够截取指定字段后面的一个字符串吗?
展开全部
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
的表达式,指定子字符串的长度
如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
的表达式,指定子字符串的长度
展开全部
--这个查询需要注意的是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
--定义参数
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CHARINDEX
返回字符串中指定表达式的起始位置。
语法
CHARINDEX
(
expression1
,
expression2
[
,
start_location
]
)
参数
expression1
一个表达式,其中包含要寻找的字符的次序。expression1
是一个短字符数据类型分类的表达式。
expression2
一个表达式,通常是一个用于搜索指定序列的列。expression2
属于字符串数据类型分类。
start_location
在
expression2
中搜索
expression1
时的起始字符位置。如果没有给定
start_location,而是一个负数或零,则将从
expression2
的起始位置开始搜索。
例如:SELECT
CHARINDEX(
'you
',
'I
love
you
')
你利用一下就能实现。至于多个可以循环截取字符串。
返回字符串中指定表达式的起始位置。
语法
CHARINDEX
(
expression1
,
expression2
[
,
start_location
]
)
参数
expression1
一个表达式,其中包含要寻找的字符的次序。expression1
是一个短字符数据类型分类的表达式。
expression2
一个表达式,通常是一个用于搜索指定序列的列。expression2
属于字符串数据类型分类。
start_location
在
expression2
中搜索
expression1
时的起始字符位置。如果没有给定
start_location,而是一个负数或零,则将从
expression2
的起始位置开始搜索。
例如:SELECT
CHARINDEX(
'you
',
'I
love
you
')
你利用一下就能实现。至于多个可以循环截取字符串。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询