❶ sql語句查詢IP段
--先構建一個轉換ip地址格式的函數 以『.』為間隔按4段拆分 每段前端補0 然後截取3位
--可將『1.1.166.0』轉換為『001001166000』
create function convertIP (@strIP varchar(20))
returns varchar(20)
as
begin
declare @str1 varchar(6),@str2 varchar(6),@str3 varchar(6),@str4 varchar(6),
@i int,@j int,@k int,@m int
set @i=1
set @j=1
set @k=1
set @m=1
while (@i<=len(@strIP))
begin
if (substring(@strIP,@i,1)='.')
begin
if @k=1 set @str1=substring(@strIP,@m,@j-1)
if @k=2 set @str2=substring(@strIP,@m,@j-1)
if @k=3 set @str3=substring(@strIP,@m,@j-1)
set @j=1
set @m=@i+1
set @k=@k+1
end
else
set @j=@j+1
set @i=@i+1
end
set @str4=substring(@strIP,@m,@j-1)
set @str1='000'+@str1
set @str1=substring(@str1,len(@str1)-2,3)
set @str2='000'+@str2
set @str2=substring(@str2,len(@str2)-2,3)
set @str3='000'+@str3
set @str3=substring(@str3,len(@str3)-2,3)
set @str4='000'+@str4
set @str4=substring(@str4,len(@str4)-2,3)
return @str1+@str2+@str3+@str4
end
--查詢ip地址為標准格式 例如'201.125.12.203'
select address from IP where dbo.convertIP(IPstart)<=dbo.convert('201.125.12.203') and dbo.convertIP(IPend)>=dbo.convertIP('201.125.12.203')
❷ sql排序語句怎麼寫
select * from 你的表名字 order by user_lasttime asc
❸ sql中怎樣為IP地址欄位按大小排序在線等!
把ipAddr設置成主鍵試試。
❹ 這條sql語句這么寫
PS:這個表裡最起碼也應該有個時間戳的欄位吧,不然都是重復數據,hive下測試;
思路:先統計每個網址被不同IP訪問的次數,然後以網站和ip進行分組,以次數降序排序,取小於等於3即可;(代碼未取rank<=3,也要考慮次數一樣的ip等);
code:
select t1.web,t1.ip,dense_rank() over(partition by t1.web,t1.ip order by t1.counts desc) as rank from (select web,ip,count(*) as `counts` from t group by web,ip)as t1
可以看下row_number()、dense_rank()、rank()的區別;
❺ Oracle 中 查詢IP地址的SQL語句
下面是我在項目(使用的SqlMap)里一個SQL語句關於IP段查詢的部分:
<isNotEmpty
prepend="AND"
property="startIP">
CONCAT(LPAD(SUBSTR(CLIENTIP,1,INSTR(CLIENTIP,'.',1,1)-1),3,'0'),
CONCAT(LPAD(SUBSTR(CLIENTIP,INSTR(CLIENTIP,'.',1,1)+1,INSTR(CLIENTIP,'.',1,2)-INSTR(CLIENTIP,'.',1,1)-1),3,'0'),
CONCAT(LPAD(SUBSTR(CLIENTIP,INSTR(CLIENTIP,'.',1,2)+1,INSTR(CLIENTIP,'.',1,3)-INSTR(CLIENTIP,'.',1,2)-1),3,'0'),
LPAD(SUBSTR(CLIENTIP,INSTR(CLIENTIP,'.',1,3)+1,LENGTH(CLIENTIP)),3,'0')
)
)
)
BETWEEN
CONCAT(LPAD(SUBSTR(#startIP#,1,INSTR(#startIP#,'.',1,1)-1),3,'0'),
CONCAT(LPAD(SUBSTR(#startIP#,INSTR(#startIP#,'.',1,1)+1,INSTR(#startIP#,'.',1,2)-INSTR(#startIP#,'.',1,1)-1),3,'0'),
CONCAT(LPAD(SUBSTR(#startIP#,INSTR(#startIP#,'.',1,2)+1,INSTR(#startIP#,'.',1,3)-INSTR(#startIP#,'.',1,2)-1),3,'0'),
LPAD(SUBSTR(#startIP#,INSTR(#startIP#,'.',1,3)+1,LENGTH(#startIP#)),3,'0')
)
)
)
AND
CONCAT(LPAD(SUBSTR(#endIP#,1,INSTR(#endIP#,'.',1,1)-1),3,'0'),
CONCAT(LPAD(SUBSTR(#endIP#,INSTR(#endIP#,'.',1,1)+1,INSTR(#endIP#,'.',1,2)-INSTR(#endIP#,'.',1,1)-1),3,'0'),
CONCAT(LPAD(SUBSTR(#endIP#,INSTR(#endIP#,'.',1,2)+1,INSTR(#endIP#,'.',1,3)-INSTR(#endIP#,'.',1,2)-1),3,'0'),
LPAD(SUBSTR(#endIP#,INSTR(#endIP#,'.',1,3)+1,LENGTH(#endIP#)),3,'0')
)
)
)
</isNotEmpty>
❻ SQL IP地址排序
把ip換成數字再排序吧。換數字的辦法要用程序去實現。
❼ 關於SQL排序的語句,求助
->
if
not
object_id(N'Tempdb..#T')
is
null
drop
table
#T
Go
Create
table
#T([ID]
int,[CategoryName]
nvarchar(8),[Parent]
nvarchar(5))
Insert
#T
select
1,N'簡體版',N'0'
union
all
select
6,N'光電開關FPJ1',N'0.1'
union
all
select
7,N'光電開關DR',N'0.1'
union
all
select
8,N'磁性開關',N'0.1.7'
union
all
select
9,N'光電開關CR',N'0.1.7'
union
all
select
10,N'光電開關DR',N'0.1.7'
union
all
select
12,N'光電開關FPJ1',N'0.1.7'
union
all
select
13,N'光電開關CR',N'0.1'
union
all
select
14,N'磁性開關',N'0.1.7'
union
all
select
15,N'變位感測器',N'0.1'
Go
Select
a.categoryname
AS
lev1,
b.categoryname
as
lev2,
c.categoryname
as
lev3
from
#T
a
left
join
#T
b
on
rtrim(a.[Parent])+'.'+rtrim(a.[ID])=b.[Parent]
left
join
#T
c
on
rtrim(b.[Parent])+'.'+rtrim(b.[ID])=c.[Parent]
where
a.[CategoryName]=N'簡體版'
❽ sql IP地址 排序
select *
from iptable
order by convert(numeric(20),replace(ip欄位,'.',''))
❾ 通用SQL語句排序的方法
前十名:
select top 10 id,name,score from student order by score desc
第三名:
select top 1 * from (select top 3 * from [student] order by score desc) as tb1 order by score asc
註:使用 (top * asc )desc 這種方式在 rownumber 方法出來以前是最常用的sqlserver處理分頁取值的方式
❿ 一個關於按照ip地址排序的sql語句。
order by replace(欄位,".","")