有一个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','')
.。。。。
来清除,但是会遗留数字中间那个 “,”逗号。
如果清除逗号,会把字段中的逗号全部清除,谁有更好的解决办法?
------解决思路----------------------
-- 写反了,先替掉 "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