首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求sql语句怎么实现

2012-03-11 
求sql语句如何实现?代码,名称1a2b11c(代码11表示为1的下级)我要通过一条句子,得出如下结果:代码,名称,有无

求sql语句如何实现?
代码,名称
1 a
2 b
11 c
(代码11表示为1的下级)
我要通过一条句子,得出如下结果:

代码,名称,有无下级
1 a 有
2 b 无
11 c 无

[解决办法]

SQL code
create table # (代码 int, 名称 varchar(3))insert # select 1   , 'a' union all select  2   , 'b'  union all select11  , 'c' goselect * ,有无下属=case when exists(select * from # where l.代码<>代码 and charindex(rtrim(l.代码),rtrim(代码))=1) then '有' else '无' end from # l 代码          名称   有无下属----------- ---- ----1           a    有2           b    无11          c    无
[解决办法]
Assembly code
DECLARE @TB TABLE(代码 INT, 名称 VARCHAR(10))INSERT @TBSELECT 1  ,  'a' UNION ALLSELECT 2  ,  'b' UNION ALL--SELECT 11 ,  'c' UNION ALLSELECT 22  ,  'b' UNION ALLSELECT 111 ,  'D' SELECT *,CASE WHEN EXISTS(SELECT 1 FROM @TB WHERE   LEN(T.代码)<LEN(代码)AND REPLACE(代码,LEFT(T.代码,1),'')=REPLACE(T.代码,LEFT(T.代码,1),'') )THEN '有'ELSE '无'ENDFROM @TB T(所影响的行数为 4 行)代码          名称              ----------- ---------- ---- 1           a          有2           b          有22          b          无111         D          无(所影响的行数为 4 行)
[解决办法]
SQL code
DECLARE @TB TABLE(代码 INT, 名称 VARCHAR(10))INSERT @TBSELECT 1  ,  'a' UNION ALLSELECT 2  ,  'b' UNION ALL--SELECT 11 ,  'c' UNION ALLSELECT 22  ,  'b' UNION ALLSELECT 111 ,  'D' SELECT *,CASE WHEN EXISTS(SELECT 1 FROM @TB WHERE   LEN(T.代码)<LEN(代码)AND REPLACE(代码,LEFT(T.代码,1),'')=REPLACE(T.代码,LEFT(T.代码,1),'') )THEN '有'ELSE '无'ENDFROM @TB T(所影响的行数为 4 行)代码          名称              ----------- ---------- ---- 1           a          有2           b          有22          b          无111         D          无(所影响的行数为 4 行) 

热点排行