巧妙利用连表查询拆分字符串
2007-02-07 23:02
363 查看
我有一个Table myTable (iName varchar(6),iDesc varchar(2000))
内容示例如下:
iName iDesc
A AGF/dfgh
B rty/fghjk/uyt/fghj
F rty/ghj/cvb
H uio/vbn/4567/678
...
即字段iDesc的内容由'/'字符分割,先想得到下面的结果:
iName iNewDesc
A AFG
A dfgh
B rty
B fghjk
B uyt
...
--以往解决方法,写一个函数然后循环拆,效率低
--先提供一个巧妙利用连表查询解决方法,如下:
--创建测试环境
Create Table Str_Test (iName varchar(6),iDesc varchar(2000))
insert into Str_Test select 'A','AGF/dfgh'
union all select 'B','rty/fghjk/uyt/fghj'
union all select 'F','rty/ghj/cvb'
union all select 'H','uio/vbn/4567/678'
--巧妙连表方法
select top 2000 id=identity(int,1,1) into # from syscolumns a,syscolumns b
select a.iName,
iNewDesc=substring(a.iDesc,b.id,charindex('/',a.iDesc+'/',b.id)-b.id)
from Str_Test a, # b
where substring('/'+a.iDesc,b.id,1)='/'
order by a.iName,b.id
drop table #
--查询结果
iName iNewDesc
--------- --------------
A AGF
A dfgh
B rty
B fghjk
B uyt
B fghj
F rty
F ghj
F cvb
H uio
H vbn
H 4567
H 678
内容示例如下:
iName iDesc
A AGF/dfgh
B rty/fghjk/uyt/fghj
F rty/ghj/cvb
H uio/vbn/4567/678
...
即字段iDesc的内容由'/'字符分割,先想得到下面的结果:
iName iNewDesc
A AFG
A dfgh
B rty
B fghjk
B uyt
...
--以往解决方法,写一个函数然后循环拆,效率低
--先提供一个巧妙利用连表查询解决方法,如下:
--创建测试环境
Create Table Str_Test (iName varchar(6),iDesc varchar(2000))
insert into Str_Test select 'A','AGF/dfgh'
union all select 'B','rty/fghjk/uyt/fghj'
union all select 'F','rty/ghj/cvb'
union all select 'H','uio/vbn/4567/678'
--巧妙连表方法
select top 2000 id=identity(int,1,1) into # from syscolumns a,syscolumns b
select a.iName,
iNewDesc=substring(a.iDesc,b.id,charindex('/',a.iDesc+'/',b.id)-b.id)
from Str_Test a, # b
where substring('/'+a.iDesc,b.id,1)='/'
order by a.iName,b.id
drop table #
--查询结果
iName iNewDesc
--------- --------------
A AGF
A dfgh
B rty
B fghjk
B uyt
B fghj
F rty
F ghj
F cvb
H uio
H vbn
H 4567
H 678
相关文章推荐
- java--sql模糊查询(字符串拆分与拼接)
- Oracle SQL多行字符串拆分使用层次查询(connect by)、正则表达式
- MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法
- mysql 对字符串字段拆分查询
- SQL SERVER 2005中利用XML对字符串拆分的方法
- MySQL种字符串拆分(substring_index)并作为关联查询条件后多列展示
- MySQL种字符串拆分(substring_index)并作为关联查询条件后多列展示
- Java与JavaScript 完美实现字符串拆分(利用数组存储)与合并的互逆操作
- 利用容器来拆分字符串
- MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法
- (非常小的技巧)利用范型List存储数据并通过Contains查询字符串是否包含在范型中
- MySQL种字符串拆分(substring_index)并作为关联查询条件后多列展示
- MySQL种字符串拆分(substring_index)并作为关联查询条件后多列展示
- SQLServer2008运用存储过程拆分字符串并查询结果并把结果存入临时表中。
- SQL不定条件的查询, 数据库拆分字符串
- 巧妙的利用Mongodb做地理空间查询
- 利用sql拆分字符串
- 利用容器来拆分字符串
- MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法
- linux利用C库查询配置文件是否包含特定字符串