从地址SQL中分离城市,州和邮政编码

时间:2011-06-22 09:48:18

标签: sql-server-2008

我必须将城市州和邮政编码与下面的地址栏分开。

有时可能会丢失City名称或State或Zipcode。

有时候地址栏中只有City,State和Zip。

请帮我解决此问题。

Adress                           
PO BOX 28087 RALEIGH, NC 27611      
PO BOX 671 NASHVILLE, TN 37202    

2 个答案:

答案 0 :(得分:0)

Amrutha, 请注意你所说的这个地址是用文本形式还是你有一个表格字段来输入这些......

无论如何,如果它是文本形式,我的意思是如果这些字段作为单个字符串保存在一起,那么SQL将无济于事。你必须使用某种文本提取脚本(例如perl,awk)。

答案 1 :(得分:0)

declare @Cities varchar(200)
declare @Count int
declare @Adress varchar(52)
set @Adress = '5129 TWISTED WILLOW CREEDMOOR NC'
declare @i int
set @i = 0
declare @j int
set @j = 1
set @Count = 0
declare @city varchar(20)
set @city = '' 
set @Cities = 'RALEIGH.CARY.FOUR OAKS.CREEDMOOR'
while(@i < =LEN (@cities))
begin
  if(SUBSTRING(@cities,@i,1) = ',')
  set @count = @count+1
     set @i = @i+1
end
while(@j <=5)
begin
declare @s varchar(20)
set @s = PARSENAME(@cities,@j)
  if(PATINDEX('%'+@s+'%',@Adress ) >0)
  set @city = PARSENAME(@cities,@j)

  set @j = @j +1
end


select @city 

我找到了上面的解决方案,但我应该将所有城市名称添加到字符串@cities。 他们是否有其他方式轻松做到这一点?