0

在 SQL 中,我试图获取不同长度的地址,并在回车时将其分隔为两个单独的字段。我已成功分离地址,但每隔一段时间(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,' )),',','')

这将返回:“bc BUFORD AVE”,它应该返回“abc 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”。

两个相同的选择如何返回不同的结果?

4

1 回答 1

0

我认为你不需要这些replace( RIGHT(零件。

如果您使用:

select REPLACE( 'RM320 VOTECH@abc BUFORD AVE,' ,
      LEFT( 'RM320 VOTECH@abc BUFORD AVE,' , 
        CHARINDEX( '@' , 'RM320 VOTECH@abc BUFORD AVE,' )
       ) , '' );

result: 

abc BUFORD AVE,

注意:为了便于阅读,我已将 CHAR(10) 替换为 @。

于 2015-03-26T22:46:11.923 回答