读书人

取字段指定字符前的文本并轮换

发布时间: 2013-12-20 17:03:19 作者: rapoo

取字段指定字符前的文本,并替换!
某表有字段名age,数据类型Varchar(50)
数据如下:
18
18岁
19岁零3个月
9
8岁

现在需要将该age字段的数据更新成纯数字的,意思就是只保留字符'岁'之前的文本!

请问该如何写这个sql语句阿?


[解决办法]

 create FUNCTION [dbo].[GET_NUMBER](@S VARCHAR(100)) 
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%',@S) > 0
BEGIN
set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
END
RETURN @S
END




调用select [dbo].[GET_NUMBER](age) as age from table
[解决办法]
引用:
 create FUNCTION [dbo].[GET_NUMBER](@S VARCHAR(100)) 
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%',@S) > 0
BEGIN
set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
END
RETURN @S
END




调用select [dbo].[GET_NUMBER](age) as age from table


这个不错,楼主试试
[解决办法]

with tbl as
(
select '18' as a
union all
select '18岁' as a
union all
select '19岁零3个月' as a
union all
select '8岁' as a
union all
select '9' as a
)


select N'年龄' = case
when PatIndex('%[^0-9]%',a) = 0 then a
else stuff(a,PatIndex('%[^0-9]%',a),len(a),'') end
from tbl

读书人网 >asp.net

热点推荐