修改一下鱼兄的: Select [ID] from TablName Where Len(ID)=(Select Max(Len(ID)) from TablName)
select * from tablename where len(replace(ID,'.',''))=len(ID)-3
Select [ID] from TablName Where Len(ID)=(Select Max(Len(ID)) from TablName)厉害
只有这个可以: select * from tablename where len(replace(ID,'.',''))=len(ID)-3楼上几个的不满足类似 xx.xxx.xxx.xx等
大家是不是都考虑错了,楼主的例子也是,最大长度是固定的吗? create table tb(ip varchar(20)) insert tb select '1.1' union all select '1.1.1' union all select '1.1.1.1' union all select '1.1.1.2' union all select '172.16.3.60' Select ip from tb Where Len(ip)=(Select Max(Len(ip)) from tb)--结果: ip -------------------- 172.16.3.60select * from tb where len(replace(ip,'.',''))=len(ip)-3--结果: ip -------------------- 1.1.1.1 1.1.1.2 172.16.3.60drop table tb 也就是需要确定是是这里面有3个 .
不好意思 大家理解错了 我的意思是: ID 1. 1.1 1.1.1 1.1.1.1 1.1.1.2.4 1.1.1.3 1.1.2 1.1.2.1 1.1.2.2 1.1.2.3 1.1.3 求一sql语句! 可以得到如下代码(最上层,没有下极) 1.1.1.1 1.1.1.2.4 1.1.1.3 1.1.2.1 1.1.2.2 1.1.2.3 1.1.3 不知道下边的思路对么? Select * from TablName Where sum(Select count(*) from TablName where id like 不知道这里怎么写了)
--建立测试环境 Create table TEST (ID Varchar(10)) --插入数据 Insert TEST Values('1') Insert TEST Values('1.1') Insert TEST Values('1.1.1') Insert TEST Values('1.1.1.1') Insert TEST Values('1.1.1.2.4') Insert TEST Values('1.1.1.3') Insert TEST Values('1.1.2') Insert TEST Values('1.1.2.1') Insert TEST Values('1.1.2.2') Insert TEST Values('1.1.2.3') Insert TEST Values('1.1.3') --测试 Select * from TEST A Where Not Exists(Select * from TEST Where ID Like (A.ID+'%') And ID<>A.ID) --删除测试环境 Drop table TEST --结果 /* ID 1.1.1.1 1.1.1.2.4 1.1.1.3 1.1.2.1 1.1.2.2 1.1.2.3 1.1.3 */
Select * from TEST A Where Not Exists(Select * from TEST Where ID Like (A.ID+'%') And ID<>A.ID)ID Like (A.ID+'%') 此方法,学习中!
Select [ID] from TablName Where Len(ID)=(Select Max(Len(ID)) from TablName)
where len(replace(ID,'.',''))=len(ID)-3
select * from tablename
where len(replace(ID,'.',''))=len(ID)-3楼上几个的不满足类似 xx.xxx.xxx.xx等
create table tb(ip varchar(20))
insert tb
select '1.1' union all
select '1.1.1' union all
select '1.1.1.1' union all
select '1.1.1.2' union all
select '172.16.3.60' Select ip from tb
Where Len(ip)=(Select Max(Len(ip)) from tb)--结果:
ip
--------------------
172.16.3.60select * from tb
where len(replace(ip,'.',''))=len(ip)-3--结果:
ip
--------------------
1.1.1.1
1.1.1.2
172.16.3.60drop table tb
也就是需要确定是是这里面有3个 .
我的意思是:
ID
1.
1.1
1.1.1
1.1.1.1
1.1.1.2.4
1.1.1.3
1.1.2
1.1.2.1
1.1.2.2
1.1.2.3
1.1.3
求一sql语句! 可以得到如下代码(最上层,没有下极)
1.1.1.1
1.1.1.2.4
1.1.1.3
1.1.2.1
1.1.2.2
1.1.2.3
1.1.3
不知道下边的思路对么?
Select * from TablName Where sum(Select count(*) from TablName where id like 不知道这里怎么写了)
Create table TEST
(ID Varchar(10))
--插入数据
Insert TEST Values('1')
Insert TEST Values('1.1')
Insert TEST Values('1.1.1')
Insert TEST Values('1.1.1.1')
Insert TEST Values('1.1.1.2.4')
Insert TEST Values('1.1.1.3')
Insert TEST Values('1.1.2')
Insert TEST Values('1.1.2.1')
Insert TEST Values('1.1.2.2')
Insert TEST Values('1.1.2.3')
Insert TEST Values('1.1.3')
--测试
Select * from TEST A Where Not Exists(Select * from TEST Where ID Like (A.ID+'%') And ID<>A.ID)
--删除测试环境
Drop table TEST
--结果
/*
ID
1.1.1.1
1.1.1.2.4
1.1.1.3
1.1.2.1
1.1.2.2
1.1.2.3
1.1.3
*/