1. 程式人生 > >使用SQL查詢ip段(前三段不變)

使用SQL查詢ip段(前三段不變)

今天在查詢資料的時候,突然要查指定IP範圍內的IP總數,思考了一下,主要使用charindex和reverse,下面是詳細的SQL語句

DECLARE 
@IP varchar(50),
@IPSub varchar(40),
@range varchar(10),
@beginIP varchar(50),
@endIP varchar(50),
@max int,
@min int,
@count int
SET @IP='62.145.88.0/24'
SET @range=right(@IP,charindex('.',reverse(@IP))-1)--獲取第三個ip後的字串
--PRINT @range
SET @IPSub= substring(@IP,0,len(@IP)-charindex('.',reverse(@IP))+2)--獲取ip前三段字串
SET @max=substring(@range,0,charindex('/',@range))--獲取最大值,假裝的
--PRINT @max
SET @min=substring(@range,charindex('/',@range)+1,len(@range)-charindex('/',@range))--獲取最小值,假裝的
--PRINT @min
IF @max<@min
begin
	SET @
[email protected]
+convert(varchar(5),@max) SET @[email protected]+convert(varchar(5),@min) PRINT @beginIP PRINT @endIP end else begin SET @[email protected]+convert(varchar(5),@min) SET @[email protected]+convert(varchar(5),@max) PRINT @beginIP PRINT @endIP end SET @count=(SELECT count(*) FROM UserActivityLog where RemoteAddr BETWEEN @beginIP AND @endIP) PRINT @count

但是這方法也是有問題的,因為這裡使用了字串來查詢,這裡可以考慮使用
parsename(@ip,4)*cast(16777216 as bigint)+parsename(@ip,3)*65536+
    parsename(@ip,2)*256+parsename(@ip,1) 
這個樣子可以轉化成數字來查詢,準確度就會很高了

相關推薦

使用SQL查詢ip()

今天在查詢資料的時候,突然要查指定IP範圍內的IP總數,思考了一下,主要使用charindex和reverse,下面是詳細的SQL語句 DECLARE @IP varchar(50), @IPSub varchar(40), @range varchar(10), @b

mysql查詢所有分類的資料

設計思路 當mysql查詢有很多分類時,可能只需要每種分類的前三或者前十的資料,不需要返回所有的結果,所以我們可以給不同種類的資料新增序號,然後通過序號來篩選結果 例:建一張工人工作質量表,用年份和質量來分類 CREATE TABLE `work` ( `id` int(11

sql查詢每組幾條記錄

首先建立測試資料 CREATE TABLE `t2` ( `id` int(11) NOT NULL, `gid` char(1) DEFAULT NULL, `col1` int(11) DEFAULT NULL, `col2` int(11) DEFAU

mysql巧用連表查詢各科成績

下列是各表的詳情,不想自己建表的同學可以直接copy code,資料隨意。 建立表成績詳情表: CREATE TABLE score ( id int(10) NOT NULL AUTO_INCREMENT, subject_id int(10

查詢總成績排名的學生成績資訊

面試的時候碰到一個筆試題,一張學生成績表A(表可以自行腦補,就這個意思),如圖(學生,課程,分數): 要查出總分排名前三的學生成績資訊。 首先是要查出總分前三的學生: SELECT name from a GROUP BY name ORDER BY sum(fensh

8.CCNA第八天-路由決策二層資料轉發/資料封裝/二層封裝/ARP請求

路由器 做路徑決策 從自身的路由表中選取最優路徑為主機提供資料轉發服務 乙太網當中,靜態路由後面書寫 出介面和下一跳的問題 如果書寫下一跳  路由器將執行遞迴查詢,以查找出介面 如果書寫出介面,路由器將直接將資料轉發出去,但是存在路

二分查詢變形記:從迴圈數說起

二分查詢 二分查詢 二分查詢迴圈不變數 首選我們介紹標題中提到的兩個名詞: 二分查詢 二分查詢的搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則查詢成功;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一

GoDemo:給定數字字串求可能的ip組合,數字順序

package main import ( "fmt" "os" "strconv" ) func getip(source string) (ips []string) {

oracle sql查詢ip內的記錄

sql 語句中使用如下(ip值的儲存型別為varchar): TO_NUMBER(REGEXP_SUBSTR(login_ip,'\\w+',1,1))*POWER(2,24)+ TO_NUMBER(REGEXP_SUBSTR(login_ip,'\\w+',1,2))*P

sql查詢報表時字較長拖動麻煩時只需要雙擊中間的分隔線即可全部查看了

sqlserversql查詢報表時字段較長拖動麻煩時只需要雙擊中間的分隔線即可全部查看了本文出自 “宏宏在線” 博客,請務必保留此出處http://215363.blog.51cto.com/205363/1956128sql查詢報表時字段較長拖動麻煩時只需要雙擊中間的分隔線即可全部查看了

一個表裏有多個字需要同時使用字典表進行關聯顯示,如何寫sql查詢語句

TE bbs 創建者 一個 需要 rom signed assigned user 參考:https://bbs.csdn.net/topics/330032307 數據庫裏面有一個字典表,這張表裏面有id段和對應的名字字段。在另外一個記錄的表裏面有對應的上述字典表的id

oracle SQL查詢number字精度丟失之解決方法

ont spa ora bsp acl 存在 解決辦法 from eight 解決辦法: -- 3.3:表示原始數據 --fm9999999990.0000:表示保留到小數點後4位,若不存在則用0補位。 select to_char(nvl(3.3,0),‘fm9999

使用sql查詢mysql/oracle/sql server/gp數據庫中指定表的字信息(字名/字類型/字長度/是否是主鍵/是否為空)

statement oracle數據庫 style cte key post creates str columns 1,根據數據庫類型拼接不同URL /** * 根據類型不同拼接連接的URL * @param dbType 1:mysql、2:ora

mysql ip查詢IP的方法

ip格式:1.1.1.2 IP段格式:1.1.1.1/128 SELECT ipRange, SUBSTRING_INDEX(ipRange, '/', 1) startip, CONCAT(SUB

MS SQL 查詢資料庫中所有索引以及對應的表字 SQL Server Profiler效能跟蹤

新專案上線,需要對庫裡的表進行相關索引檢查。這兒首先需要檢視一下庫裡的表那些有索引,然後用SQL Server Profiler進行跟蹤,檢查SQL語句效能,查詢頻率等。 查詢庫裡所有索引相關資訊這兒給出一個SQL,使用了CTE查詢: with temp as(

SQL(收藏)查詢每個部門工資名的員工資訊

問:Oracle的EMP表,查詢每個部門工資前三名的員工資訊,如何寫?? 解答:(通用sql) select deptno, ename, sal from emp e1 where ( select count(1) fr

【面試複習】一週內銷售額SQL查詢語句

前言      最近面試複習,越發的覺得自己的基礎太弱了,趁著這個機會,也當是鞏固基礎知識吧。 SQL語句  一、表中欄位:部門ID,銷售額,銷售日期,銷售數量,銷售總價        要求:先按部

sql語句如何按產品類別查詢,取出每個類別的條記錄

select * from (select *,row_number() over(partition by classid order by classid) as rownum  --上面利用row_number()先按classid分類,然後給每類內分別編號1、2、

SQL查詢資料庫中所有表、表字名及資料型別

select b.name,a.colid,a.name,(select systypes.name+'('+cast(a.length/2  as varchar(10))+')' from syst

linux下ip與閘道器在同一配置的方法

當想要設定的閘道器與主機ip地址不同時,用route add default gw  xx.xxx.xx.xx是不成功的,比如我主機ip地址為:192.168.1.3,想要設定的閘道器為192.168.2.1。 [email protected]:/etc/net