0

SQL では、さまざまな長さのアドレスを取り込み、それをキャリッジ リターンで 2 つの別々のフィールドに分けようとしています。住所の分離に成功しましたが、ときどき (300 回中 17 回) 住所の右側が正しくないことがわかります。

Adr1: RM320 VOTECH(Char(10))abc BUFORD AVE,

Adr2: FIELD ATHLETIC BLDG(Char(10))abc 15TH AVE SE,

キャリッジ リターンの前後にスペースはありません。

select replace(RIGHT( REPLACE( 'RM320 VOTECH
abc BUFORD AVE,' , LEFT( 'RM320 VOTECH
abc BUFORD AVE,' , 
CHARINDEX( CHAR( 10 ) , 'RM320 VOTECH
abc BUFORD AVE,' )) , '' ) , CHARINDEX( CHAR( 10 ) , 'RM320 VOTECH
abc BUFORD AVE,' )),',','')

これは、「abc buford ave」を返す必要があるときに「bc BUFORD AVE」を返します。

select replace(RIGHT( REPLACE( 'FIELD ATHLETIC BLDG
abc 15TH AVE SE,' , LEFT( 'FIELD ATHLETIC BLDG
abc 15TH AVE SE,' , 
CHARINDEX( CHAR( 10 ) , 'FIELD ATHLETIC BLDG
abc 15TH AVE SE,' )) , '' ) , CHARINDEX( CHAR( 10 ) , 'FIELD ATHLETIC BLDG
abc 15TH AVE SE,' )),',','')

これは正しく「abc 15TH AVE SE」を​​返します。

2 つの同一の選択がどのように異なる結果を返すのですか?

4

1 に答える 1