私は膨大な顧客データを持っています。私はAddress1
列から5桁の郵便番号を取得したいです。TSQL:文字列から固定長の数字だけを抽出する方法
私は以下の乱雑なコードを持っている:上記のコードの場合
SELECT
(SELECT LEFT(SUBSTRING(Address1, PATINDEX('%[0-9]%', Address1), 8000),
PATINDEX('%[^0-9]%', SUBSTRING(Address1, PATINDEX('%[0-9]%', Address1), 8000) + 'X') -1))
FROM CustomerList where LEN(LEFT(SUBSTRING(Address1, PATINDEX('%[0-9]%', Address1), 8000),
PATINDEX('%[^0-9]%', SUBSTRING(Address1, PATINDEX('%[0-9]%', Address1), 8000) + 'X') -1)) = 5 -- Get only records that has exactly 5 value
を、以下のデータが動作します:
"筋力JTジョーンズ40030。。" - "40030"
を得ることができますしかし、以下のデータは機能しません:
"22 Str。Mel 50630" - 郵便番号ではなく、 "22"番地のみを取得できます。
「65から31 Kampar 47000バウ」 - のみ65
「ロット199 Guasa 30990オマール」を得ることができます - だけだから私のコードは唯一の郵便番号を持っているそれらのレコードを取得することができます199
を得ることができます。 Address1
に他の数字が含まれていると、動作しません。
助けてください。
EDIT:
どうやら私の現在のコードは `「左から数字を読み始めている、私は右の代わりにからの読み込みを開始し、現在のコードを変更することができる方法はありますか?あなたはこのようなものを使用しようとすることができますポストの例では
データの郵便番号は、常に住所の最後/最後の部分ですか? – Tyron78
巨大なデータリストを持っている場合は、ポストコードは*別の*フィールドにする必要があります。 * 1つの*ポストコードを検索するたびに1M行を解析するとします。 –
@PanagiotisKanavosデータはクライアントによって提供されているため、フィルタリングして別の列に分割する必要があります。 –