首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2013-12-20 
取字段指定字符前的文本,并替换!某表有字段名age,数据类型Varchar(50)数据如下:1818岁19岁零3个月98岁现在

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

热点排行