sql如何提取,从右边第一个为数字的字符,2为长度的字符串 20

比如06月和012月出来就为06和12... 比如06月和012月出来就为06和12 展开
 我来答
百度网友0f37e23c0
2010-06-24 · TA获得超过1543个赞
知道大有可为答主
回答量:1070
采纳率:50%
帮助的人:1296万
展开全部
我来回答吧: 下列sql语句我测试过, sql server版的,要是mysql需要转换下。可以Hi我

建立函数

create function myfn_GetInt(@str varchar(50))
returns varchar(50)
as
begin
if @str = ''
return ''
declare @r varchar(50), @index int, @temp varchar(2)
set @r = ''
set @index = len(@str)
set @temp = ''
while @index > 0
begin
set @temp = substring(@str,@index,1)
if '1234567890' not like '%'+@temp+'%'
begin
if @r <> ''
break
end
else
set @r = @r + @temp
set @index = @index - 1
end
set @r = REVERSE(@r)
return @r
end

执行函数,显示结果为 08

select dbo.myfn_GetInt('我出生于1979年08月十六日')
wforce
2010-06-24 · TA获得超过843个赞
知道小有建树答主
回答量:672
采纳率:0%
帮助的人:791万
展开全部
--测试数据:
declare @t table(s varchar(366))
insert into @t
select
'012月'
union all select
'06月'

--以下为查询语句,实际应用把表名和字段名改为实际即可
select substring(s,len(s) - PATINDEX('%[0-9]%',REVERSE(s)),2) as 结果
from @t
where PATINDEX('%[0-9]%',REVERSE(s)) > 0 and isnumeric(substring(s,len(s) - PATINDEX('%[0-9]%',REVERSE(s)),2)) = 1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式