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 つの同一の選択がどのように異なる結果を返すのですか?