當前位置:首頁 » 編程語言 » 怎麼樣用sql查詢一段ip地址
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

怎麼樣用sql查詢一段ip地址

發布時間: 2023-07-04 23:50:40

A. sql查詢問題關於IP段

IP地址被保存前應該轉換為數字,僅在顯示時轉換為字元,處理時應該統一用數字處理.
create
function
dbo.fn_IP(@ip
varchar(15))
returns
bigint
begin
return
parsename(@ip,4)*cast(16777216
as
bigint)+parsename(@ip,3)*65536+parsename(@ip,2)*256+parsename(@ip,1)
end
declare
@tb
table
(id
int,ip
varchar(15))
insert
@tb
select
1,'10.210.128.207'
UNION
ALL
select
2,'10.210.128.206'
UNION
ALL
select
3,'10.210.128.205'
UNION
ALL
select
4,'10.210.128.204'
UNION
ALL
select
5,'10.210.128.203'
UNION
ALL
select
6,'10.210.128.202'
UNION
ALL
select
7,'10.210.128.201'
------------------------------調用---------------------------------------------------
select
id,ip,dbo.fn_IP(ip)
from
@tb
where
dbo.fn_IP(ip)
between
dbo.fn_IP('10.210.128.203')
and
dbo.fn_IP('10.210.128.205')

B. mysql 中怎樣查詢 ip

怎麼感覺你的寫法總是怪怪的?
你存入資料庫後,查看一下,你確定有存入資料庫么?
如果沒有存入資料庫,就是你前面那句存入語句的問題了。
如果是我寫,我會這么寫:
$sql="insert
into
count(ipaddr)
values('"&$visitip&"')";
查詢的:
$sql="select
*
from
count
where
ipaddr
like
'%"&$key&"%'";
我兩年前學的PHP,但因為那時很難找PHP空間,結果就不了了之了。。。
不懂上面我寫的有沒有錯,有錯請指正,在我的評論中幫我指正,謝謝了~!

C. 怎麼查看SQL的IP地址還有怎麼修改SQL的IP地址啊

你好,很高興能回答你的問題。

你的問題其實用SQLSERVER都有一個自帶的工具Sqlserverconfigurationmanager.就可以解決。

下面我以sqlserver2008為例介紹操作方法。

1,首先你電腦上安裝了SQLServer2008.然後打開開始菜單-->所有程序-->MicrosoftSQLServer2008-->ConfigurationTools-->SQLServerConfigurationManager

5,如果有不明白可以追問。

D. 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')

E. 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>

F. 怎樣用sql查詢ip地址前兩段

可通過LEFT函數實現。如下實例:

如某資料庫中表Table1的IP列,儲存了IP地址的信息。因IP地址前兩段(共7位)固定不變,可直接用select left(ip,7) from table1 where 1 = 1 ...

筆者亦通過定義臨時變數取值的方法,演示如下圖:

G. 怎麼使用SQL查詢IP地址所屬IP段

三個NIC負責全世界所有IP的分配.理論上三個NIC的資料庫涵
蓋了所有的IP.我下面以APNIC為例說明怎麼操作.登錄到APNIC
的主頁上www。apnic。net選擇APNIC WWW Whois Search
在框中填上填入你想查詢的ip地址:61.130.34.5(我隨機選擇的)
APNIC的返會的結果為:

Whois Search results for ' 61.130.34.5'...
inetnum: 61.130.0.0 - 61.130.127.255/IP范圍/
netname: CNINFONET-ZJ /網路名稱/
descr: CNINFONET Zhejiang province network/網路描述1/
descr: Data Communication Division/網路描述2/
descr: China Telecom/網路描述3/
country: CN /國家/
admin-c: CH93-AP/網管/
tech-c:YC30-AP/技術網管/
mnt-by:MAINT-CHINANET /網路標識/
mnt-lower: MAINT-CHINANET-ZJ
changed: [email protected] 20000101/聯系人郵件地址/
source:APNIC/信息來源/

person:Chinanet Hostmaster
address: A12,Xin-Jie-Kou-Wai Street
country: CN
phone: +86-10-62370437
fax-no:+86-10-62053995
e-mail:[email protected]
nic-hdl: CH93-AP
mnt-by:MAINT-CHINANET
changed: [email protected] 20000101
source:APNIC

person:YICHUN WANG
address: NO 378 YAN'AN ROAD,HANGZHOU, ZHEJIANG PROVINCE,310006
country: CN
phone: +86-571-7015441
fax-no:+86-571-7015514
e-mail:[email protected]
nic-hdl: YC30-AP
mnt-by:MAINT-CHINANET-ZJ
changed: [email protected] 20000328
source:APNIC

person:YICHUN WANG
address: NO 378 YAN'AN ROAD,HANGZHOU, ZHEJIANG PROVINCE,310006
country: CN
phone: +86-571-7015441
fax-no:+86-571-7015514
e-mail:[email protected]
nic-hdl: YC30-AP
mnt-by:MAINT-CHINANET-ZJ
changed: [email protected] 20000328
source:APNIC

dgse注:"/"之間的部分是我加的注釋

從返回的信息大概可以推斷出此IP來自中國電信CHINANET浙江163.
當然這樣查到的信息是相當籠統的.

幾個注意的問題:
1)Whois是一種官方提供的信息,目的是為了保證整個Internet運行環境的
協調統一和網路暢通無阻.Whois是針對Internet目錄所提供的信息檢索
服務,是網路重要的目錄服務之一.
2)目前國內流傳一種叫"IP搜索客"的共享軟體是私人編寫的,提供的IP的來
源往往有限(限於國內),且結果有時很不準確,但是有些結果卻精確的
可怕,比如最新的版本甚至可以通過IP准確定位於某個城市,或者某個大
學的某個試驗室(好可怕的說 呵呵).
3)並非所有位於大陸的網路全部向APNIC注冊,比如國內建校園網較早的清華
大學,北京大學等,以北京大學為例(162.105.0.0~~162.105.255.255)在
APNIC上查不到結果,卻可以在ARIN上查到結果.
4)有些國內的用戶使用的ISP是國外(比如ENI)的,那麼查詢的的資料庫就
不能選擇為APNIC,而應該是ARIN.

H. 使用SQL語句獲得伺服器名稱和IP 地址

使用SQL語句獲得伺服器名稱和IP地址獲取伺服器名稱:SELECT SERVERPROPERTY('MachineName')select @@SERVERNAMEselect HOST_NAME()獲取IP地址

I. Oracle 中 查詢IP地址的SQL語句

select
LOCATION
from
T_Base_IPAddressInfo
where
'192.168.0.72'
between
startip
and
endip
這樣可以查,但是不準確
select
SUBSTR('218.0.6.182',
1,length('218.0.6.182')
-
instr('.',
reverse('218.0.6.182')))
from
(select
*
from
T_Base_IPAddressInfo
where
'218.0.6.182'
between
startip
and
endip)
t
where
startip
=
SUBSTR('218.0.6.182',
1,length('218.0.6.182')
-
instr('.',
reverse('218.0.6.182')))
||
SUBSTR(startip,
instr('.',
reverse(startip)))
需要了解下substr
好instr
的用法