--> 测试数据: #T
if object_id('tempdb.dbo.#T') is not null drop table #T
create table #T (代码 varchar(5),名称 varchar(3))
insert into #T
select 'a001','...' union all
select 'a002','...' union all
select 'a003','...' union all
select 'b001','...' union all
select 'b002','...' union all
select 'zc001','...'
go
select 代码,left(代码,patindex('%[0-9]%',代码)-1) 前缀
from #T
go
drop table #T/*
代码 前缀
----- -----
a001 a
a002 a
a003 a
b001 b
b002 b
zc001 zc(6 row(s) affected)*/
if object_id('tempdb.dbo.#T') is not null drop table #T
create table #T (代码 varchar(5),名称 varchar(3))
insert into #T
select 'a001','...' union all
select 'a002','...' union all
select 'a003','...' union all
select 'b001','...' union all
select 'b002','...' union all
select 'zc001','...'
go
select 代码,left(代码,patindex('%[0-9]%',代码)-1) 前缀
from #T
go
drop table #T/*
代码 前缀
----- -----
a001 a
a002 a
a003 a
b001 b
b002 b
zc001 zc(6 row(s) affected)*/
if object_id('tempdb.dbo.#T') is not null drop table #T
create table #T (代码 varchar(5),名称 varchar(3))
insert into #T
select 'a001','...' union all
select 'a002','...' union all
select 'a003','...' union all
select 'b001','...' union all
select 'b002','...' union all
select 'zc001','...'
go
select 代码,left(代码,patindex('%[0-9]%',代码)-1) 前缀,
convert(int,stuff(代码,1,patindex('%[0-9]%',代码)-1,'')) 数字
from #T
go
drop table #T/*
代码 前缀 数字
----- ----- -----------
a001 a 1
a002 a 2
a003 a 3
b001 b 1
b002 b 2
zc001 zc 1(6 row(s) affected)
*/
t_User.fAreaID = t_Area.fID
有地区表t_Area 有人员表t_User
[fID] [fName] [fID] [fName] [fAreaID]
51 四川 1 张三 5101
5101 成都 2 张四 510101
510101 锦江区 3 王五 NULL我希望查询出t_User表的结果如下:
[fID] [fName] [fAreaID] [fFullAreaName] [省] [市] [县]
1 张三 5101 四川\成都 四川 成都 NULL
2 张四 510101 四川\成都\锦江区 四川 成都 锦江区
3 王五 NULL NULL NULL NULL NULL