取字段指定字符前的文本,并替换!
某表有字段名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
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