日期:2014-05-17  浏览次数:20628 次

SQL server的查询问题
在SQL server中如何截取字符串啊? 例如:上海市水电路841号2楼201室
 我需要把号前面的841截取出来然后和另外一张表的号做个对比?

上海市水电路393弄2号1001室这个弄前面的那个393我也需要给拿出来做比较,坐等大牛回帖。

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

------解决方案--------------------
SQL code

select SUBSTRING ('上海市水电路841号2楼201室' ,7 , 3 )
select SUBSTRING ('上海市水电路393弄2号1001室' ,7 , 3 )

------
841

(1 行受影响)


------
393

(1 行受影响)

------解决方案--------------------
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)
------解决方案--------------------
SQL code
顶....
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)