--> 测试数据: #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)*/

解决方案 »

  1.   

    --> 测试数据: #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) 前缀,
           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)
    */
      

  2.   

    再问一下关于分解的问题:
    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