我有一个SQL Server表,其中一列存储加拿大邮政编码。有时它们的格式为H0H 0H0,其他时间则为H0H0H0或H0H-0H0。我希望能够更新所有记录以将格式标准化为H0H 0H0,但我无法弄清楚SQL。任何帮助将不胜感激。
答案 0 :(得分:5)
UPDATE PostalCodes SET PostalCode = LEFT(PostalCode, 3) + ' ' + RIGHT(PostalCode, 3 )
这假设邮政编码字段已经在左侧和右侧进行了修剪。它实际上抓住了左边的3位数,放置了一个空格,然后是右边的3位数。
答案 1 :(得分:0)
假设存在以下约束:
对于字段中的任意数量的字符,这应该可以解决问题。:
update PostalCodes
set PostalCode = stuff( PostalCode , 4 , len(PostalCode) - 6 , ' ' )
或者,你可以做这样的事情 - 一个案例陈述,寻找人们发现创建垃圾邮政编码的所有不同方式,并根据需要对待每一种:
update PostalCodes
set PostalCode = case
when PostalCode like '[A-Z][0-9][A-Z][ -][0-9][A-Z][0-9]' then ...
when PostalCode like '![A-Z][0-9][A-Z][0-9][A-Z][0-9]' then ...
...
else PostalCode
end
像
这样的选择语句选择PostalCode,count(*) 来自PostalCodes 其中PostalCode不喜欢'[A-Z] [0-9] [A-Z] [0-9] [A-Z] [0-9]' 按邮政编码分组 按2 desc排序
应该显示垃圾数据。