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

SQL server select语句问题
我想取得:上海市中山北一路1250号2号楼18层 
中的1250然后和另一个表里面的字段进行比较,如何实现?
select substring(ZS,charindex('路' ,ZS)+1 ,  
(charindex('号' ,ZS)-charindex('路',ZS))) as [number] from eim_basic_info 其中ZS是列名
但是你这个提示(charindex('号' ,ZS)-charindex('路',ZS))传递到 SUBSTRING 函数的长度参数无效。跪求高手解答?

------解决方案--------------------
你这个是要取 字段中的 门牌号么,这个不好弄的,除非你能保证每一个值 都是按固定的规律输入的,否则就得不到你想要的结果
------解决方案--------------------
探讨
我想取得:上海市中山北一路1250号2号楼18层
中的1250然后和另一个表里面的字段进行比较,如何实现?
select substring(ZS,charindex('路' ,ZS)+1 ,
(charindex('号' ,ZS)-charindex('路',ZS))) as [number] from eim_basic_info 其中ZS是列名
但是你这个提示(charinde……

------解决方案--------------------
在你之前的贴子都提示过你,确认你的数据都是符合一定的共性规则。你这个都提示了substring参数无效,说明你substring内部的写法肯定是出来的结果有问题
------解决方案--------------------
SQL code

declare @eim_basic_info table(ZS varchar(50))
insert into @eim_basic_info 
select '上海市中山北一路1250号2号楼18层' union all
select '上海市水电路841号2楼201室' union all
select '上海市水电路393号2楼1001室'

--语句
select substring(ZS,charindex('路',ZS)+1,(charindex('号',ZS)-charindex('路',ZS)-1)) as number 
from @eim_basic_info

--结果
number
--------------------------------------------------
1250
841
393

(3 行受影响)