2011-05-27 11 views
0

カナダの郵便番号を格納する1つの列を持つSQL Serverテーブルがあります。彼らは時々H0H 0H0の適切なフォーマットにあり、H0H0H0またはH0H-0H0のように書かれています。私はH0H 0H0として形式を標準化するためにすべてのレコードを更新できるようにしていますが、私はSQLを理解できません。どんな助けもありがとう。PostalCodeデータを標準化するSQL

+3

これまでに書いたコードを投稿してください。人々は一般的にあなたのためのコードを書くのが好きではありません。それはそのままで、これは仕事の説明であり、質問ではありません。 –

答えて

5
UPDATE PostalCodes SET PostalCode = LEFT(PostalCode, 3) + ' ' + RIGHT(PostalCode, 3) 

これは、郵便番号フィールドがすでに左右両側で切り取られていることを前提としています。それは文字通り左の3桁をつかみ、スペースを入れてから右の3桁を置きます。

0

次の制約が保持すると仮定すると:問題の

  • フィールドは常に長さが少なくとも6つの文字です。
  • 郵便番号の最初のセグメントは、フィールドの1〜3列にあります。
  • 最後のセグメントは、フィールドの右端3列にあります。
  • これはトリックを行う必要があり、列4

に位置ゼロまたはそれ以上の余分な文字がありますが、フィールド内の任意の数の文字:

また
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 

選択郵便番号のようなselect文は、COUNT(*)郵便番号が好きではないPostalCodes から 「[AZ] [0-9] [AZ] [0-9] [AZ] [0-9] ' グループby郵便番号 オーダー2件

はあなたにジャンクデータを表示する必要があります。

関連する問題