`
cheneyph
  • 浏览: 292651 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
【oracle】常用脚本 oracle
使用rename关键字来实现字段名的修改:alter table 表名 rename column旧的字段名 to 新的字段名名;
使用modify关键字来实现对数据类型的修改:alter table 表名 modify 字段名 数据类型;


-- 增加字段
alter table temp_user add sysdatestr varchar(40);
alter table temp_user add (sysdatestr varchar(40) default 'tsfdwe');

-- 移除字段
alter table temp_user drop column sysdatestr;

Oracle修改字段类型方法总结: http://blog.csdn.net/gdjlc/article/details/23762549
-- 假设字段数据为空,则不管改为什么字段类型,可以直接执行
alter table temp_user modify (sysdatestr varchar2(20));
【oracle】提取字段中的数字 oracle
select TRIM(TRANSLATE('<ROOT><MPAGE32ID>20673</MP',
         trim(
             TRANSLATE('<ROOT><MPAGE32ID>20673</MP', '0123456789', ' ')
         ),
       ' '))
  from dual
结果:3220673

内层的TRANSLATE将数字替换成空格
外层的TRANSLATE将数字之外的替换成空格,剩下的就是数字了

注意:全角数字也会被过滤掉

如:
select TRIM(TRANSLATE('<ROOT><MPAGE32ID1526>20673</MP',
         trim(
             TRANSLATE('<ROOT><MPAGE32ID1526>20673</MP', '0123456789', ' ')
         ),
       ' '))
  from dual
结果:3220673


电话号码字段非空,且仅包含数字的:
select *
  from member_user t
 where t.user_mobile is not null
   and translate(t.user_mobile, '0123456789', '') is null;

【oracle】全角转换成半角 oracle
把一些全角数字转换成半角的数据,可利用oracle的 to_single_byte 这个函数就可以解决问题 比如:
UPDATE ARCHIVES_IN T1
          SET T1.IN_CODE = (SELECT TO_SINGLE_BYTE(T2.IN_CODE)
                              FROM ARCHIVES_IN T2
                             WHERE T1.IN_ID = T2.IN_ID)
        WHERE NOT REGEXP_LIKE(T1.IN_CODE,
                              '^(-{0,1}+{0,1})[0-9]+(.{0,1}[0-9]+)
但是有个问题,如果这个in_code字段中只有一个全角数字的话,需要手动的去修改一下。
【oracle】正则表达式 oracle oracle正则表达式
在oracle里正则表达式有四个函数可用,分别是regexp_like、regexp_substr、regexp_instr 和regexp_replace。

REGEXP_LIKE:比较一个字符串是否与正则表达式匹配 
(srcstr, pattern [, match_option]) 

REGEXP_INSTR:在字符串中查找正则表达式,并且返回匹配的位置 
(srcstr, pattern [, position [, occurrence [, return_option [, match_option]]]]) 

REGEXP_SUBSTR:返回与正则表达式匹配的子字符串 
(srcstr, pattern [, position [, occurrence [, match_option]]]) 

REGEXP_REPLACE:搜索并且替换匹配的正则表达式 
(srcstr, pattern [, replacestr [, position [, occurrence [, match_option]]]]) 


1. select * from member_user t where regexp_like(t.user_mobile, '^1[[:digit:]]{10}');
^代表开始,
*表示出现0次或多次,
+表示出现1次或多次,
[:digit:]代表0-9的纯数字
(还有$代表以什么结尾,如果是[[:digit:]]+$代表以数字结尾)



select * from test_table where regexp_like(name,'[[:alpha:]]')
这里是表示查询匹配任意字母,也包括中文字


select * from test_table where regexp_like(name,'[[:alnum:]]')
这里是表示查询匹配任意字母和数字


select * from test_table where regexp_like(name,'[[:digit:]]')
这里是表示查询匹配任意数字
 
 
Select * from test_table Where regexp_like(name,’of’,’i’)
这里就是of不区分大小写
 
 
Select * from test_table Where regexp_like(name,’^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$’)
这样我们可以查询是不是ip格式





REGEXP_SUBSTR与SUBSTR函数相同,返回截取的子字符串
REGEXP_SUBSTR(srcstr, pattern [, position [, occurrence [, match_option]]])
注:
srcstr 源字符串
pattern 正则表达式样式
position 开始匹配字符位置
occurrence 匹配出现次数
match_option 匹配选项(区分大小写)

SELECT regexp_substr('1PSN/231_3253/ABc', '[[:alnum:]]+') FROM dual;
Output: 1PSN
[[:alnum:]]+ 表示匹配1个或者多个字母或数字字符
 
 
SELECT regexp_substr('1PSN/231_3253/ABc', '[[:alnum:]]+', 1, 2) FROM dual;
Output: 231
与上面一个例子相比,多了两个参数
1 表示从源字符串的第一个字符开始查找匹配
2 表示第2次匹配到的字符串(默认值是“1”,如上例)
Global site tag (gtag.js) - Google Analytics