在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”。
两个相同的选择如何返回不同的结果?
答案 0 :(得分: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)替换为@。