问题确认:你是要提取以下划线(_)为分隔符的字串的第三个子字串。
答案:
select
dbogetpara('14层_303盘区_5307工作面',3,'_')
条件:先要再数据库中加入这个自定议函数。这里免费奉献给你一个有用的函数,用于按指定分隔符提取字串。
create
function
getpara
(@sql
nvarchar(3000),--要分割的原字串。
@sn
int,
--要取第几个
@deli
varchar(1))--分隔符
returns
varchar(1000)--返回值
as
begin
declare
@first
int,@last
int,@result
varchar(1000),@sn0
int
select
@sn0=0,@first=0,@last=1,@sql=@sql+replicate(@deli,5)
while
@sn0!=@sn
begin
select
@sn0=@sn0+1,@first=@last,@last=charindex(@deli,@sql,@last)+1
end
set
@result=substring(@sql,@first,@last-@first-1)
return
(
@result
)
end
go
一条记录时采用以下方法:使用PATINDEX函数找出字符串中第一次出现数字的位置
declare
@aa
varchar(80),----INFO列
@bb
varchar(80)
set
@aa
='你好12按时地方'
set
@bb=''
while
PATINDEX('%[0-9]%',@aa)<>0
/每次循环找出一个数字/
begin
set
@bb
=
@bb+substring(@aa,PATINDEX('%[0-9]%',@aa),1)/把找出来的数字进行相加/
set
@aa=substring(@aa,1,PATINDEX('%[0-9]%',@aa)-1)+
substring(@aa,PATINDEX('%[0-9]%',@aa)+1,len(@aa)-PATINDEX('%[0-
9]%',@aa))
/把找出来的数字从原先的字符串中踢除出来,然后再循环找出更多的数字/
end
select
@bb/要求得到的结果/
要对一张表中的所有记录进行查询时,可以把上面的语句改写成一个存储过程,采用游标进行处理,并把找出来的记录插入到相应的虚拟表里面,即可得到你想要的结果
SELECT FROM table WHERE field NOT LIKE '%[0-9a-zA-Z]%' 在SQL中,有四种模糊查询方式,即可以使用匹配方式。 %表示匹配任意 [xxx] 匹配 [ ] 之间的字符。 _ 匹配一个字符 [^ ] 表示不含 [ ] 内的字符。
set rs=servercreateobject("adodbrecordset")sql="select from 表名"rsopen sql,conn,1,1'开始赋值FieldCount=rsfieldscount
select
case when bFModel like '%=%' then SUBSTRING(bFModel, CHARINDEX('=',bFModel)+1,LEN(bFModel)-CHARINDEX('=',bFModel))
when bFModel like '%%' then SUBSTRING(bFModel, 0,LEN(bFModel)-CHARINDEX('',bFModel))
end as 长度
采用下列语句是否可以呢?
select [列1],[列2],[列3] from [表名] where [列] = [列数值]请采用上面的语句试试,如果不可以,请追加提问内容!
以上就是关于SQL语句提取字符串中数字全部的内容,包括:SQL语句提取字符串中数字、在SQLServer中如何把列中包含的数字提取出来、SQL准确查一串数字的语法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)