将IP字符串转换成数值(ORACLE)

比如我的IP 为192.168.114.1==>>192168114001

假如为12.16.11.119==>>12016011119 

我的转换目的就是为了IP好比较

 

一、不通过函数的实现

 

to_number

(

 

lpad(substr(ip,1,instr(ip,'.',1,1)-1),3,'0')

||

lpad(substr(ip,instr(ip,'.',1,1)+1,instr(ip,'.',1,2)-instr(ip,'.',1,1)-1),3,'0')


||lpad(substr(ip,instr(ip,'.',1,2)+1,instr(ip,'.',1,3)-instr(ip,'.',1,2)-1),3,'0')

 

 

||lpad(substr(ip,instr(ip,'.',1,3)+1,length(ip)-instr(ip,'.',1,2)-1),3,'0')

 

)

 

SQL语句的核心就上面一部分

 

 

现在来讲讲这几个函数的用法顺便学习下

1、to_number

语法:TO_NUMBER(string[,format[,nlsparams]])   
目的:将CHAR或VARCHAR2类型的string转换为一个NUMBER类型的数值,如果指定了format,那么string应该遵循相应的数字格式。nlsparams的用来指定小数点和钱分位分隔符,以及货币符号。它与TO_CHAR()互为反函数

 

在这只举一个简单的例子

 

select to_number('0023') from dual

结果为:

 

------

23  

2、lpad

 

在Oracle/PLSQL中,lpad函数将左边的字符串填充一些特定的字符,其语法格式如下:   

     lpad( string1, padded_length, [ pad_string ] )
     其中string1是需要粘贴字符的字符串
     padded_length是返回的字符串的数量,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成padded_length;

     pad_string是个可选参数,这个字符串是要粘贴到string1的左边,如果这个参数未写,lpad函数将会在string1的左边粘贴空格。
    例如:
          

lpad('tech', 7);将返回' tech'

lpad('tech', 2);将返回'te'
lpad('tech', 8, '0');将返回'0000tech'
lpad('tech on the net', 15, 'z');将返回 'tech on the net'
lpad('tech on the net', 16, 'z');

将返回 'ztech on the net'

 

 

3、substr

oracle的substr函数的用法
 取得字符串中指定起始位置和长度的字符串   substr( string, start_position, 
[ length ] )
 如:
     substr(
'This is a test'62)     would return 'is'
     substr(
'This is a test'6)     would return 'is a test'
     substr(
'TechOnTheNet'-33)     would return 'Net'
     substr(
'TechOnTheNet'-63)     would return 'The'

 

4、instr

 

INSTR方法的格式为
INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)

例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。

默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。

所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "Instring" FROM DUAL的显示结果是

Instring
——————
14

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值