在有汉字和数字组成的字段中,如何只提取字段中的数字,

一抹橄榄 2015-04-18 11:14:19
原来的表为:


使用: update dbo.a set youbian=REVERSE(SUBSTRING(REVERSE(zuozhedanwei),charINDEX('%[0-9]%',REVERSE(zuozhedanwei))+1,3))

最后得到的是:

这不是我想的结果,我想如何没有数字的话,则邮编一列为空,而不是汉字,求大牛来解答!!
...全文
696 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
一抹橄榄 2015-04-20
  • 打赏
  • 举报
回复
谢谢,对于t_sql自定义函数我还有待学习啊, 谢谢大牛
hery2002 2015-04-19
  • 打赏
  • 举报
回复

USE [AdventureWorks2012];
GO
DECLARE @t_TB TABLE
(
   COL VARCHAR(20)
)
;

INSERT INTO @t_TB VALUES
('ABC123')
,('ENA329')
,('EEE22W33')
,('F1W2C3E8')
,('DDDDDDD')
;

SELECT col,LEFT(subsrt, PATINDEX('%[^0-9]%', subsrt + 't') - 1)  as new_num
FROM (
    SELECT col,subsrt = SUBSTRING(col, pos, LEN(col))
    FROM (
        SELECT col, pos = PATINDEX('%[0-9]%', col)
        FROM @t_TB
    ) d
) t
/*
col                  new_num
-------------------- --------------------
ABC123               123
ENA329               329
EEE22W33             22
F1W2C3E8             1
DDDDDDD              
*/
卖水果的net 2015-04-18
  • 打赏
  • 举报
回复

-- 使用自定义的函数

create table test(id int , c1 varchar(20) , c2 varchar(20))
go
insert into test(id,c1) values(1,'河石家庄'),(2,'石家庄123'),(3,'石家庄1234X')
go
create function fn_getnumber(@str varchar(100))
returns varchar(100)
begin
    declare @return varchar(100) = ''
    declare @temp varchar(2)
    while LEN(@str) > 0 
    begin
        set @temp = SUBSTRING(@str,1,1)
        if @temp between '0' and '9' 
        select @return = @return + @temp
        set @str = SUBSTRING(@str,2,len(@str))
    end
    return @return
end
go
select * from test 
go
update test set c2 = dbo.fn_getnumber(c1)
go
select * from test 
go
drop table test
go
drop function fn_getnumber
go


(3 行受影响)
id          c1                   c2
----------- -------------------- --------------------
1           河石家庄                 NULL
2           石家庄123               NULL
3           石家庄1234X             NULL

(3 行受影响)


(3 行受影响)
id          c1                   c2
----------- -------------------- --------------------
1           河石家庄                 
2           石家庄123               123
3           石家庄1234X             1234

(3 行受影响)


22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧