问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql如何截取字符串中前面的数字

发布网友 发布时间:2022-04-30 04:29

我来回答

6个回答

热心网友 时间:2022-04-08 09:01

如果提取字符串中的数字,需要自定义函数,以下函数包含截取字符串中的数字、字母、汉字等。

create function fn_myget
(@str as varchar(max),
@category as varchar(10)='Chinese',
@start as int=1,
@end as int=100000)
returns varchar(max)
as
begin
 declare @i int=@start
 declare @lenstr int=len(@str)
 declare @str1 varchar(max)
 declare @strre varchar(max)=''
 while @i<=@lenstr and @i<=@end
  begin
  set @str1=substring(@str,@i,1);
  --提取汉字
  if(@Category='Chinese')
   begin
   if(len(@str1)!=datalength(@str1))
   set @strre=@strre+@str1
   end
  --提取字母
  else if(@Category='Letters')
   begin
   if((ascii(@str1)>=65 and ascii(@str1)<=90 or ascii(@str1)>=97 and ascii(@str1)<=122))
   set @strre=@strre+@str1
   end
  --提取数字
  else if(@Category='Digital')
   begin
   if(ascii(@str1)>=48 and ascii(@str1)<=57)
   set @strre=@strre+@str1
   end
  else
   set @strre='输入错误'
  set @i=@i+1
  end
 return(@strre)
end

测试:

1、截取字符串dsajf23423423中的数字

select dbo.fn_myget('dsajf23423423','Digital',1,1000)

结果:

2、截取字符串dsajf23423423中的字母

select dbo.fn_myget('dsajf23423423','Letters',1,1000)

结果:

3、截取“说多了几分134lljjf爱”中的中文

select dbo.fn_myget('说多了几分134lljjf爱','Chinese',1,1000)

结果:

自定义函数说明:

函数共需要4个参数:

第一个参数是要截取的字符串;

第二个参数根据要截取的内容不同,分别有“Digital”(截取数字)、“Letters”(截取字母)、“Chinese”(截取中文);

第三个参数代表截取的起始位;

第四个参数代表截取的截取的结束位。

热心网友 时间:2022-04-08 10:19

估计你是SQL Server。我没环境,不能做,给你个方法,自己试吧。

用LEN函数取长度。
用PATINDEX函数取第一个不是数字的字符位置。
二者相减得长度。
用SUBSTRING函数截取字符串。

热心网友 时间:2022-04-08 11:53

如果是固定的前两位可以用LEFT函数进行截取。
LEFT (<character_expression>, <integer_expression>)
返回character_expression 左起 integer_expression 个字符。

热心网友 时间:2022-04-08 13:45

declare @str nvarchar(1000)
set @str='234565成立dfgdf46456'

declare @temp int,@result nvarchar(1000)
select @temp=1,@result=''

while @temp<=len(@str)
begin

if ISNUMERIC(substring(@str,@temp,1)) = 1
begin
set @result = @result + substring(@str,@temp,1)
end
else if @result <> ''
begin
break
end

set @temp = @temp + 1

end

select @result

热心网友 时间:2022-04-08 15:53

sql不好截,在代码中实现吧:
先写个判断字符是否是数字的函数,然后根据字符串的长度循环判断即可

热心网友 时间:2022-04-08 18:17

substring(string, length) 函数就行了 两个长度就行了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
40年前,那个因流氓罪入狱的“囚歌王子”迟志强,如今过得怎样? iPhone7怎么截屏录屏 ...6 Plus玫瑰金 64G!没有现金,用信用卡付钱原价6888! 分期付 适合小学生的护脊书包有哪些品牌?RUIPAI瑞牌可以么? 双反调查美对中国企业“双反”调查不合法 想问下这次美国对中国光伏行业实行双反,那么从中国香港出口的东西也要... 号外释义 号外 英文怎么说 本人愚笨,望高人指点:有道中有的英语单词解释中有“号外”,请问是什么... 填量词:张,截,盏,级,窝,个,一()烛台.一()油灯.一()兔子.一()蜡烛.一... SQL server 如何截取特定字符第二次出现的前几位 SQL取出从某字符开始的N个字符的字符串 datediff函数用法! oracle sql 取字段前几位? 请问下SQL怎么取值前几位的字符做比较 sql server 内怎么获取前几个字符串 sql中截取指定字符的前几位 在SQL语句中如何用正则取出一个字符串的前几位数字 sql取特定字符的前面几位字符 SQL如何查找字段中的前几个字符 手机版股票那个卷商有三板斧这个功能: 用mysql查询出字段中的前几个字 vivo代工厂有哪些 白令海海域帝王蟹捕捞季节的主要风向是偏北风的原因是什么? sql 怎么截取字符串前几个字符 oppo代工厂在哪?谁知道讲一下,谢谢 经传软件捕捞季节指标不同颜色的柱子代表什么意思啊? sql 取字符前几位 经传软件的捕捞季节能达到多少的成功率?和普通的买卖点指标有什么区别啊? 华为和oppo品控哪个好?都是哪个代工厂生产的? sql server 取两个字符之间的字符 220V加热管接380V电源 220v的电发热管4千瓦和380v的发热管4千瓦串联接380v的电 能接吗 功率一样吗? 三根220V的电热管380V的电压怎么接线 一根220V的电热管能接在380V的电源上吗 请问9根电热管220V的接380V用星接怎么接有图吗谢谢 10根220v电热管怎么接220v和380v的电? 220V的电热管能接成380V的Y连接吗? 220v加热管接380v尾端接好后接地是什么回事? 一根220V的电热管 能接在380V的电源上吗??? 220V2KW的电加热管可以接到380V的电压上吗 一台手机怎样申请两个? 一个手机号码怎么申请两个? 一个手机怎么开通两个 同一部手机怎样申请第二个? 一个手机号怎么申请第二个? 英纳格能带多少年 英纳格手表怎么把表把转出来 一个手机怎样开通两个? 一个手机号怎么注册两个?