在SQL server中如何截取字符串啊? 例如:上海市水电路841号2楼201室
 我需要把号前面的841截取出来然后和另外一张表的号做个对比?上海市水电路393弄2号1001室这个弄前面的那个393我也需要给拿出来做比较,坐等大牛回帖。

解决方案 »

  1.   

    上海市水电路841号2楼201室 
    如果前面'上海市水电路'格式固定,即长度固定 然后号码固定那就很好办
    declare @address varchar(30)
    set  @address='上海市水电路841号2楼201室'
    --set  @address='上海市水电路393弄2号1001室'
    select  substring(@address,7,3)
    /*
    ------
    841
    */
      

  2.   


    select SUBSTRING ('上海市水电路841号2楼201室' ,7 , 3 )
    select SUBSTRING ('上海市水电路393弄2号1001室' ,7 , 3 )------
    841(1 行受影响)
    ------
    393(1 行受影响)
      

  3.   

    declare @str nvarchar(30)=N'上海市水电路841号2楼201室'
    select left(stuff(@str,1,patindex('%[0-9]%',@str)-1,''),
                  patindex('%[^0-9]%',stuff(@str,1,patindex('%[0-9]%',@str)-1,''))-1)
      

  4.   

    顶....
    declare @str nvarchar(30)
    set @str=N'上海市水电路841号2楼201室'
    select left(stuff(@str,1,patindex('%[0-9]%',@str)-1,''),
      patindex('%[^0-9]%',stuff(@str,1,patindex('%[0-9]%',@str)-1,''))-1)
      

  5.   

    那就用4楼的这个,@str就是你查询出来的值,用个wihle一条一条整