当前位置: 代码迷 >> Sql Server >> 怎么去除字段中的数字
  详细解决方案

怎么去除字段中的数字

热度:97   发布时间:2016-04-24 09:53:16.0
如何去除字段中的数字
有一个nvarchar(100)的字段,想把里面的数字去掉:

Belize City 61,461
San, Ignacio 16,812
Orange Walk 15,298
Belmopan 13,381
Dangriga 10,750

想要的结果:

Belize City 
San, Ignacio 
Orange Walk 
Belmopan 
Dangriga 

曾经想过用 
update Cities_AllCities set CityName=replace(CityName,'1','') 
update Cities_AllCities set CityName=replace(CityName,'2','') 
update Cities_AllCities set CityName=replace(CityName,'3','') 
update Cities_AllCities set CityName=replace(CityName,'4','') 
.。。。。
来清除,但是会遗留数字中间那个 “,”逗号。
如果清除逗号,会把字段中的逗号全部清除,谁有更好的解决办法?
------解决思路----------------------
引用:

曾经想过用 
update Cities_AllCities set CityName=replace(CityName,'1','') 
update Cities_AllCities set CityName=replace(CityName,'2','') 
update Cities_AllCities set CityName=replace(CityName,'3','') 
update Cities_AllCities set CityName=replace(CityName,'4','') 
.。。。。
-- 不妨 再增加一倍的工作量,你先替换'1,' ,这样数量中间的“,” 就都没有了,再去替换0-9。
-- 由原来的替换 10 次,变成 替换 20 次。
update Cities_AllCities set CityName=replace(CityName,'1','') 
update Cities_AllCities set CityName=replace(CityName,'1,','') 






-- 写反了,先替掉 "1, ",再替掉 "1"
update Cities_AllCities set CityName=replace(CityName,'1,','') 
update Cities_AllCities set CityName=replace(CityName,'1','') 

------解决思路----------------------

create function dbo.test_fun1(@y nvarchar(100))
returns nvarchar(100)
as
BEGIN
declare @i nvarchar(100)
set @I=@Y
WHILE PATINDEX('%[^0-9]%',@y)>0
begin 
SET @y=STUFF(@y,PATINDEX('%[^0-9]%',@y),1,'')
end
set @y=LEFT(@y,1)
set @I=left (@i,charindex(@y,@I)-1)
return @i
END
--------------------------------------------------------------------------------------------------
---->测试数据
IF OBJECT_ID('TEMPDB.DBO.#TEMP')IS NOT NULL 
DROP TABLE #TEMP
------------------------------------------------------------------------------------------------------------
CREATE TABLE #TEMP
(test nvarchar(100))
insert into #TEMP
select 'Belize City 61,461'union all
select 'San, Ignacio 16,812' union all
select 'Orange Walk 15,298' union all
select 'Belmopan 13,381' union all
select 'Dangriga 10,750'
go
select dbo.test_fun1(test) from #temp
------------------------------------------------------------------
结果

(5 行受影响)

----------------------------------------------------------------------------------------------------
Belize City 
San, Ignacio 
Orange Walk 
Belmopan 
Dangriga 
  相关解决方案