2017-10-11 4 views
2

私はすべてが1つの列にあるアドレスから都市を抽出しようとしていますコンマ。あなたが見ることができるように私はすべてが1つの列にある最後のアドレスと最後のアドレスとの間で、コンマを最後に2番目から最後のアドレスにシティを抽出しようとしています

例えばAddress列が

LYNDEN COURT,CHARTWELL,HAMILTON,3210 

CNR DIXON & BANNISTER STREETS,MASTERTON,MASTERTON,5810 

3C,SHORT STREET,NEWMARKET,AUCKLAND,1023 

が含まれ、カンマの数が同じでは常に存在ではありません。しかし、これらの例では、「Hamilton」、「Masterton」、「Auckland」を抽出する必要があります。

同じテーブルの他のフィールドと共にselectステートメントの一部として使用します。

は、SQL Server 2008 R2を使用するだけでなく、私はおそらくオーバーこれを複雑サーバー

答えて

1

にアクセスするために、SSMSを2014を使用していますが、

DECLARE @var VARCHAR(50) = 'CNR DIXON & BANNISTER STREETS,MASTERTON,MASTERTON,5810' 

SELECT REVERSE(SUBSTRING(REVERSE(@var), CHARINDEX(',',REVERSE(@var)) +1, CHARINDEX(',', REVERSE(@var), CHARINDEX(',',REVERSE(@var)) + 1) - CHARINDEX(',',REVERSE(@var)) -1)) 
+0

恐ろしい試すことができ、素晴らしい作品!私は@ varの部分を使う方法がわからないので、その代わりにフィールド名を入れて、うまくいった。しかし、テーブル全体を実行すると、エラーメッセージ> 537、レベル16、状態3、行2が発生する LEFTまたはSUBSTRING関数に長さパラメータが渡されました。しかし、もし私がそれをYTDで動かせば、それは機能します。それは私がいくつかの悪いデータを持っているか、あまりにも長い値の一つですか? –

+0

@EvanJones私の推測では、おそらく2つのカンマまたは長さの引数を負にする任意のカンマを持っていないいくつかのデータがあります。 – SQLChao

関連する問題