GBase 8s 檢查是否是IP且轉數值函數

GBase 8s中沒有ip類型字段(如inet),對于判斷字符串是否是IP地址,需要自己編寫相應的函數。
如下,實現檢查輸入的字符串是否為IPv4地址(-1否),且轉換成數值類型:

-- function ip to num, if not ip return -1
DROP FUNCTION IF EXISTS func_ip2num(varchar);
CREATE FUNCTION func_ip2num(p_ip varchar(20))
RETURNS int8 WITH (NOT VARIANT);define v_ip1 varchar(10);define v_ip2 varchar(10);define v_ip3 varchar(10);define v_ip4 varchar(10);define v_ipnum int8;define v_delpos smallint;define v_curpos smallint;ON EXCEPTIONRETURN -1;END EXCEPTION;let v_ipnum = -1;-- ip part1let v_delpos = charindex('.',p_ip);let v_ip1 = substr(p_ip,1,v_delpos - 1)::int;-- ip part2let v_curpos = v_delpos + 1;let v_delpos = charindex('.',p_ip,v_curpos);let v_ip2 = substr(p_ip,v_curpos,v_delpos - v_curpos)::int;-- ip part3let v_curpos = v_delpos + 1;let v_delpos = charindex('.',p_ip,v_curpos);let v_ip3 = substr(p_ip,v_curpos,v_delpos - v_curpos)::int; -- ip part4let v_curpos = v_delpos + 1;let v_ip4 = substr(p_ip,v_curpos)::int;IF v_ip1 < 0 OR v_ip2 < 0 OR v_ip3 < 0 OR v_ip4 < 0 ORv_ip1 > 255 OR v_ip2 > 255 OR v_ip3 > 255 OR v_ip4 > 255 THENRETURN -1;END IF;let v_ipnum = v_ip1 * 16777216 + v_ip2 * 65536 + v_ip3 * 256 + v_ip4;RETURN v_ipnum;
END FUNCTION;

示例:

SELECT func_ip2num('192.168.100.100') FROM dual;  -- 返回:3232261220SELECT func_ip2num('192.-168.100.100') FROM dual;  -- 返回 -1,不是IPSELECT func_ip2num('292.-168.100.100') FROM dual;  -- 返回 -1,不是IP

注:當然僅僅需要判斷是否為IP,也可以使用regexp_like功能:

SELECT regexp_like('192.168.100.100', '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$') FROM dual;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/14174.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14174.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14174.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據分析案例——電商平臺數據集

數據來源于阿里云天池&#xff0c;為淘寶app平臺在2014年11月18日-12月18日的數據。 數據處理 導入相關的包&#xff0c;設置seaborn的繪圖風格&#xff1a; import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns sns.set()使用o…

Little Snitch for Mac(小飛賊防火墻軟件)v5.7.6注冊激活版

Little Snitch for Mac&#xff0c;也被稱為“小飛賊”防火墻軟件&#xff0c;是一款專為Mac用戶設計的網絡安全工具。以下是關于Little Snitch for Mac的一些主要特點&#xff1a; Little Snitch for Mac(小飛賊防火墻軟件)v5.7.6注冊激活版下載 強大的監控能力&#xff1a;Li…

Rust:如何在 Windows 的 Linux 子系統(WSL)下安裝

一、安裝步驟 在Windows Subsystem for Linux (WSL)下安裝Rust&#xff0c;可以按照以下步驟進行&#xff1a; 打開WSL終端&#xff1a; 首先&#xff0c;確保你的WSL已經安裝并正常運行。你可以在Windows搜索欄中輸入“WSL”并選擇你安裝的Linux發行版&#xff08;如Ubuntu&a…

leetcode-順時針旋轉矩陣-111

題目要求 思路 1.假設現在有一個矩陣 123 456 789 2.我們可以根據19這個對角線將數據進行交換&#xff0c;得到矩陣 147 258 369 3.然后將矩陣每一行的數據再翻轉&#xff0c;得到矩陣 741 852 963 代碼實現 class Solution { public:vector<vector<int> > rot…

Django自定義模板標簽與過濾器

title: Django自定義模板標簽與過濾器 date: 2024/5/17 18:00:02 updated: 2024/5/17 18:00:02 categories: 后端開發 tags: Django模版自定義標簽過濾器開發模板語法Python后端前端集成Web組件 Django模板系統基礎 1. Django模板語言概述 Django模板語言&#xff08;DTL&…

【譯】MySQL復制入門: 探索不同類型的MySQL復制解決方案

原文地址&#xff1a;An Introduction to MySQL Replication: Exploring Different Types of MySQL Replication Solutions 在這篇博文中&#xff0c;我將深入介紹 MySQL 復制&#xff0c;回答它是什么、如何工作、它的優勢和挑戰&#xff0c;并回顧作為 MySQL 環境&#xff0…

【Qt】深入探索Qt主窗口與菜單欄:構建高效用戶界面的實踐指南

文章目錄 前言1. 什么是Main Window?2. 詳細了解一下其中的 菜單欄&#xff1a;2.1. 創建菜單欄2.2. 添加快捷鍵2.3. 添加子菜單2.4. 添加分割線2.5. 添加圖標 3. 內存泄漏問題&#xff1a;總結 前言 在現代軟件開發中&#xff0c;用戶界面的設計對于提升用戶體驗至關重要。Q…

【雅特力AT32】串口UART、USART配置和使用方法,數組的阻塞發送函數編寫,串口接收中斷、回環、重定向

【雅特力AT32】串口UART、USART配置和使用方法&#xff0c;數組的阻塞發送函數編寫&#xff0c;串口接收中斷、回環、重定向 文章目錄 串口配置阻塞發送函數接收中斷和串口回環串口重定向附錄&#xff1a;Cortex-M架構的SysTick系統定時器精準延時和MCU位帶操作SysTick系統定時…

了解CentOS及其基礎

什么是CentOS&#xff1f; CentOS&#xff08;Community ENTerprise Operating System&#xff09;是一個社區支持的操作系統&#xff0c;基于Red Hat Enterprise Linux&#xff08;RHEL&#xff09;的源代碼。它是免費且開源的&#xff0c;廣泛用于服務器環境。 為什么選擇C…

深入理解HTTP:工作原理、特性及應用

HTTP&#xff0c;全稱Hypertext Transfer Protocol&#xff0c;即超文本傳輸協議&#xff0c;是互聯網上應用最為廣泛的一種網絡協議。它定義了客戶端和服務器之間如何交換信息&#xff0c;以及如何傳輸超文本和其他內容。HTTP協議的出現極大地推動了互聯網的普及和發展&#x…

ARM|DSP+FPGA+NVIDIA AI攝像頭定制

信邁擁有高性能的攝像頭全棧能力&#xff1a;掌握車載模組光學設計能力&#xff0c;具有多名經驗豐富光學設計專家&#xff1b;具備豐富的車載攝像模組硬件設計經驗&#xff1b;掌握目前市面上大部分車載平臺的ISP圖像畫質服務能力&#xff0c;能自主開發圖像ISP和增強算法&…

第十二章 網絡編程

第十二章 網絡編程 網絡協議概述 通信協議&#xff1a; 協議即規則&#xff0c;就好比汽車上路要遵守交通規則一樣&#xff0c;為了使全世界不同類型的計算機都可以連接起來&#xff0c;所以制定了一套全球通用的通信協議——Internet協議。有了Internet協議&#xff0c;任何…

【mysql】【docker】mysql8-互為主從

&#x1f338;&#x1f338; Linux/docker-compose/mysql8 互為主從 優雅部署 &#x1f338;&#x1f338; 記錄下兩臺Linux的mysql需要熱備份&#xff0c;互為主從&#xff0c;后期加上keepalived實現高可用切換 參考博客&#xff1a;答 案 &#x1f338; 一、準備文件 這里…

圖形學初識--直線插值算法

文章目錄 為什么需要插值算法&#xff1f;插值算法是什么&#xff1f;有哪些常見的插值算法呢&#xff1f;1. 線性插值&#xff08;Linear Interpolation&#xff09;2. 多項式插值&#xff08;Polynomial Interpolation&#xff09;3. 樣條插值&#xff08;Spline Interpolati…

Blazor 下支持 Azure AD 的多套登錄方案

比如上圖配置了兩套不同的登錄方案&#xff0c;各有自己的 TenantId 和 ClientId &#xff0c;要同時支持他們的登錄&#xff08;其實在同一套 TenantId 和 ClientId 里面配置多個登錄賬戶不就好了&#xff0c;但是......那套登錄的管理是在客戶自己的Azure AD賬戶管理下的&…

SpringBoot3 解決NoResourceFoundException: No static resource favicon.ico.異常

SpringBoot3 解決NoResourceFoundException: No static resource favicon.ico.異常 spring boot3項目中瀏覽器中訪問報錯找不到favicon.ico&#xff0c;雖然不影響使用&#xff0c;用api工具也可以忽略這個異常&#xff0c;但是防止瀏覽器訪問時出現異常干擾日志&#xff0c;所…

oracle數據庫解析過高分析

解析非常高&#xff0c;通過時間模型可以看到解析占比非常高 解析大致可以分為硬解析&#xff08; hard parse&#xff09;、軟解析&#xff08; soft parse&#xff09;和軟軟解析&#xff08; soft soft parse&#xff09;。如&#xff0c;執行一條 SQL 的時候&#xff0c;如…

星型模型和雪花模型的區別

星型模型和雪花模型都是數據倉庫設計中常用的維度建模方法&#xff0c;它們之間的主要區別在于數據組織結構、數據冗余度、查詢效率、可擴展性和正規化程度等方面&#xff1a; 星型模型 結構特點&#xff1a;星型模型中&#xff0c;一個中心的事實表連接多個維度表&#xff0…

在電腦中,Apple Mobile Device Support程序是什么?

Apple Mobile Device Support 是一項關鍵的后臺服務&#xff0c;它為 Windows 用戶提供了與蘋果 iOS 設備&#xff08;包括 iPhone、iPad 和 iPod&#xff09;順暢互動的能力。這項服務的核心功能是為iTunes軟件提供必要的支持&#xff0c;使得用戶能夠將他們的移動設備與電腦連…

Google Find My Device:科技守護,安心無憂

在數字化的時代&#xff0c;我們的生活與各種智能設備緊密相連。而 Google Find My Device 便是一款為我們提供安心保障的實用工具。 一、Find My Decice Netword的定義 谷歌的Find My Device Netword旨在通過利用Android設備的眾包網絡的力量&#xff0c;幫助用戶安全的定位所…