??xml version="1.0" encoding="utf-8" standalone="yes"?>狠狠亚洲婷婷综合色香五月排名,国产亚洲精品看片在线观看,亚洲麻豆精品果冻传媒http://www.tkk7.com/abin/category/52769.htmlzh-cnFri, 07 Jun 2013 04:27:35 GMTFri, 07 Jun 2013 04:27:35 GMT60oracle 创徏表,序列Q烦(ch)引,视图Q触发器Q函敎ͼ存储q程Q定时器Q包?/title><link>http://www.tkk7.com/abin/archive/2013/06/02/400082.html</link><dc:creator>abing</dc:creator><author>abing</author><pubDate>Sun, 02 Jun 2013 15:26:00 GMT</pubDate><guid>http://www.tkk7.com/abin/archive/2013/06/02/400082.html</guid><wfw:comment>http://www.tkk7.com/abin/comments/400082.html</wfw:comment><comments>http://www.tkk7.com/abin/archive/2013/06/02/400082.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/abin/comments/commentRss/400082.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/abin/services/trackbacks/400082.html</trackback:ping><description><![CDATA[oracle 创徏表tableQ?br /> <div>create table abin1(</div> <div>id number(20,0) not null,</div> <div>name varchar2(100)not null,</div> <div>pwd nvarchar2(100) not null,</div> <div>create_time date,</div> <div>constraint pk_abin1 primary key(id)</div> <div>)</div><br />oracle创徏索引QindexQ:(x)<br /> <div>create index myname on abin1(name);</div><br />oracle创徏序列sequenceQ?br /> <div>create sequence abin1_seq</div> <div>minvalue 1</div> <div>maxvalue 999999999</div> <div>start with 1</div> <div>increment by 1</div> <div>cache 20;</div>创徏触发器:(x)<br /> <div>create or replace trigger abin1_tri</div> <div>before insert on abin1</div> <div>for each row</div> <div>begin</div> <div>select abin1_seq.nextval into :new.id from dual;</div> <div>end;<br /><br /><br />试一条记录:(x)</div> <div>insert into abin1 (name,pwd,create_time) values ('abin','lee',sysdate); </div>呵呵Q这里插入了数据Q主键自增了Q说明成功了?br /><br /><br />创徏存储q程procedureQ?br /> <div>create or replace procedure abin1_pro</div> <div>is</div> <div>cursor mycur is select t.* from abin1 t;</div> <div>abin mycur%rowtype;</div> <div>begin</div> <div>     open mycur;</div> <div>     loop</div> <div>        fetch mycur into abin;</div> <div>        if(abin.name='abin')then</div> <div>              update abin1 t set t.name='abining',t.pwd=abin.pwd,t.create_time=sysdate where t.id=abin.id;</div> <div>              commit;</div> <div>        end if;</div> <div>        exit when mycur%NOTFOUND;</div> <div>     end loop;</div> <div>        if(mycur%ISOPEN)then</div> <div>             close mycur;</div> <div>        end if;</div> <div>end;</div><br /><br />试存储q程CZQ?br /> <div>declare</div> <div>begin</div> <div>        abin1_pro;</div> <div>end;</div><br /><br />创徏oracle函数functionQ?br /> <div>create or replace function abin_func</div> <div>return number</div> <div>is</div> <div>total number;</div> <div>begin</div> <div>select count(1) into total from abin1 t;</div> <div>return(total);</div> <div>end;</div> <div><br /><br />创徏试函数CZQ?/div> <div>declare</div> <div>total number;</div> <div>begin</div> <div>      total:=abin_func;</div> <div>      dbms_output.put_line(total);</div> <div>end;</div><br /><br />oracle创徏视图Q?br /> <div>create or replace view abin1_view</div> <div>as</div> <div>select t.* from abin1 t;</div><br /><br />oracle创徏packageQ?br />create or replace package abin_pac is<br />procedure abinpac;<br />end;<br /><br /><br />oracle创徏package bodyQ?br />create or replace package body abin_pac is<br />procedure abinpac is<br />total number;<br />begin<br /> select count(1) into total from abin1;<br /> dbms_output.put_line(total);<br />end;<br />end;<br /><br />试代码Q?br />begin<br /> abin_pac.abinpac;<br />end;<br /><br /><br /><br /><img src ="http://www.tkk7.com/abin/aggbug/400082.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/abin/" target="_blank">abing</a> 2013-06-02 23:26 <a href="http://www.tkk7.com/abin/archive/2013/06/02/400082.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 常用函数http://www.tkk7.com/abin/archive/2012/12/02/392349.htmlabingabingSun, 02 Dec 2012 14:43:00 GMThttp://www.tkk7.com/abin/archive/2012/12/02/392349.htmlhttp://www.tkk7.com/abin/comments/392349.htmlhttp://www.tkk7.com/abin/archive/2012/12/02/392349.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/392349.htmlhttp://www.tkk7.com/abin/services/trackbacks/392349.html
select concat('1','2') zhao from dual;
select initcap('abin') from dual;
select lower('ABIN') from dual;
select upper('abin') from dual;
select lpad('abin',10,'*') from dual;
select rpad('abin',7,'*') from dual;
select ltrim('aaaabain','a') from dual;
select rtrim('abinaa','a') from dual;
select trim('a' from 'ababina') from dual;
select ceil(3.1415926) from dual;
select floor(3.1415926) from dual;
select sign(-123) zheng,sign(123) fu ,sign(0) ling from dual;
select last_day(sysdate-1) from dual;
select nvl('','0') from dual;
select nullif('abin','abina') from dual;
select nvl2('aa','abin','varyall') from dual;
select coalesce('','1','2') from dual;

Coalesce函数

Coalese函数的作用是?/span>NVL的函数有点相|其优势是有更多的选项?/span>

格式如下Q?/span>

Coalesce(expr1, expr2, expr3….. exprn)

Coalesce是这h处理q些参数的。如果第一个参Cؓ(f)I,则看W二个参数是否是I,否则则显C第一个参敎ͼ如果W二个参数是I再看第三个参数是否为空Q否则显C第二个参数Q依ơ类推?/span>

q个函数实际上是NVL的@环用,在此׃举例子了?/span>



abing 2012-12-02 22:43 发表评论
]]>
pl/sql中按F8执行单行语句http://www.tkk7.com/abin/archive/2012/12/02/392347.htmlabingabingSun, 02 Dec 2012 12:25:00 GMThttp://www.tkk7.com/abin/archive/2012/12/02/392347.htmlhttp://www.tkk7.com/abin/comments/392347.htmlhttp://www.tkk7.com/abin/archive/2012/12/02/392347.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/392347.htmlhttp://www.tkk7.com/abin/services/trackbacks/392347.htmlpl/sql中设|?

tools->preferences->sql window->AutoSelect statement

然后光标攑֜一行,按F8可以了, 注意: 每个语句l尾q要分号标注一下!



abing 2012-12-02 20:25 发表评论
]]>
oracle connect by nocycle priorhttp://www.tkk7.com/abin/archive/2012/11/12/391201.htmlabingabingMon, 12 Nov 2012 06:33:00 GMThttp://www.tkk7.com/abin/archive/2012/11/12/391201.htmlhttp://www.tkk7.com/abin/comments/391201.htmlhttp://www.tkk7.com/abin/archive/2012/11/12/391201.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/391201.htmlhttp://www.tkk7.com/abin/services/trackbacks/391201.htmlCREATE TABLE T_TREE (ID NUMBER, FATHER_ID NUMBER, NAME VARCHAR2(30));

插入数据Q?br />

  INSERT INTO T_TREE VALUES (1, 0, 'A');

  INSERT INTO T_TREE VALUES (2, 1, 'BC');

  INSERT INTO T_TREE VALUES (3, 1, 'DE');

  INSERT INTO T_TREE VALUES (4, 1, 'FG');

  INSERT INTO T_TREE VALUES (5, 2, 'HIJ');

  INSERT INTO T_TREE VALUES (6, 4, 'KLM');

  INSERT INTO T_TREE VALUES (7, 6, 'NOPQ');

  INSERT INTO T_TREE VALUES (0, 0, 'ROOT');

  INSERT INTO T_TREE VALUES (4, 7, 'FG');

 



select * from t_tree t start with t.id=0 connect by nocycle prior t.id=t.father_id


http://www.tkk7.com/freeman1984/archive/2011/05/06/349668.html



abing 2012-11-12 14:33 发表评论
]]>
Oracle截取字符串和查找字符? http://www.tkk7.com/abin/archive/2012/10/25/390216.htmlabingabingThu, 25 Oct 2012 05:53:00 GMThttp://www.tkk7.com/abin/archive/2012/10/25/390216.htmlhttp://www.tkk7.com/abin/comments/390216.htmlhttp://www.tkk7.com/abin/archive/2012/10/25/390216.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/390216.htmlhttp://www.tkk7.com/abin/services/trackbacks/390216.htmloracle 截取字符(substr)Q检索字W位|?instr) case when then else end语句使用 收藏
常用函数Qsubstr和instr
1.SUBSTRQstring,start_position,[length]Q?nbsp;   求子字符Ԍq回字符?br />解释Qstring 元字W串
       start_position   开始位|(?开始)(j)
       length 可选项Q子字符串的个数
For example:
substr("ABCDEFG", 0); //q回QABCDEFGQ截取所有字W?
substr("ABCDEFG", 2); //q回QCDEFGQ截取从C开始之后所有字W?
substr("ABCDEFG", 0, 3); //q回QABCQ截取从A开?个字W?
substr("ABCDEFG", 0, 100); //q回QABCDEFGQ?00虽然出预处理的字符串最长度Q但不会(x)影响q回l果Q系l按预处理字W串最大数量返回?
substr("ABCDEFG", 0, -3); //q回QEFGQ注意参?3Qؓ(f)负值时表示从尾部开始算P字符串排列位|不变?/p>

2.INSTRQstring,subString,position,ocurrenceQ查扑֭W串位置
解释QstringQ源字符?br />      subStringQ要查找的子字符?br />      positionQ查扄开始位|?br />      ocurrenceQ源字符串中W几ơ出现的子字W串
For example:
INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字W串?CORPORATE FLOOR', 目标字符串ؓ(f)'OR'Qv始位|ؓ(f)3Q取W?个匹配项的位|;q回l果?14 '




oracle中length()与lengthb()区别

oracle中length()与lengthb()区别

 

OracleSQL.oracle中length()与lengthb()区别
SQL> select length('阿猪') from dual;
LENGTH('阿猪')
--------------
             2

SQL> select lengthb('阿猪') from dual;

LENGTHB('阿猪')
---------------
              4


区别Qlength求得是字W长度,lengthb求得是字节长度?

----------------------------------------------------------------------------------------------------

SQL> select sysdate from dual;

SYSDATE
--------------
26-9? -05

SQL> select length(sysdate) from dual;

LENGTH(SYSDATE)
---------------
              9

SQL> select lengthb(sysdate) from dual;

LENGTHB(SYSDATE)
----------------
              10

lengthq回的是字符?br />lengthbq回的是字节?br />汉字“?#8221;在lengthӞq回的时1
而在lengthb时返回的?

 

 length指的是字W个敎ͼlengthb指的是字节数。字W个数跟数据库字W集有很大关pRlength和lengthb的参数都为varchar2型,因此length(sysdate)有一个隐式的cd转换Q实际上{同于length(to_char(sysdate))QORACLE安装好后默认的NLS_DATE_FORMAT参数gؓ(f)DD-MON-RRQ结果就相当于length('28-9? -05')?br />lengthb('28-9?-05')了,其结果就??0



abing 2012-10-25 13:53 发表评论
]]>
Oracle merge into http://www.tkk7.com/abin/archive/2012/10/19/389872.htmlabingabingFri, 19 Oct 2012 06:58:00 GMThttp://www.tkk7.com/abin/archive/2012/10/19/389872.htmlhttp://www.tkk7.com/abin/comments/389872.htmlhttp://www.tkk7.com/abin/archive/2012/10/19/389872.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/389872.htmlhttp://www.tkk7.com/abin/services/trackbacks/389872.htmlcreate table ABING1
(
  ID1   NVARCHAR2(100),
  NAME1 NVARCHAR2(100)
)


create table ABING2
(
  ID2   NVARCHAR2(100),
  NAME2 NVARCHAR2(100)
)


merge into abing1 t 
using abing2 s
on(t.id1=s.id2)
when matched then update set t.name1=s.name2
when not matched then insert values (s.id2,s.name2);
commit


abing 2012-10-19 14:58 发表评论
]]>
oracle的正则表辑ּhttp://www.tkk7.com/abin/archive/2012/10/11/389437.htmlabingabingThu, 11 Oct 2012 12:58:00 GMThttp://www.tkk7.com/abin/archive/2012/10/11/389437.htmlhttp://www.tkk7.com/abin/comments/389437.htmlhttp://www.tkk7.com/abin/archive/2012/10/11/389437.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/389437.htmlhttp://www.tkk7.com/abin/services/trackbacks/389437.html
关键词:(x)正则 oracle 数据?web 开?正则表达?oracle正则表达?regexp_like f REGEXP_SUBSTR 中文 oracle9 数据库正则表辑ּ 数字 REGEXP_LIKE oracle表达?10g中的正则表达?oracle正則表達?表达?sql 正则表达式函?癑ֈ?转义字符 匚w 10g 使用正则表达?oracle正则表达式regexp_like 正则替换 正则表达 字母数字l合 regexp_instr "/"?ORACLE 语法 like 通配W?匚w中文 sql转义除号 POSIX正则表达?oracle数据库表辑ּ 转义W?regexp_substr $ replace函数 oralce正则表达?oracle常用字符 转义 数字匚w alnum 2233 REPLACE INTO oralce数字匚w 11g 子表辑ּ oralce 使用 0 REGEXP_REPLACE REGEXP_LIKE() 中文字符 字符串匹?oracleQ正则表辑ּ 癑ֈL(fng)转义字符 单字W匹?9 ORACLE转义 函数 replace 字母 正则表达式 数据库 匚w中文 關鍵 W號 分號 匚w单字W?REGEXP_INSTR sql中百分号 臛_出现 匚w一部分内容
本文摘要Q?br />10g正则表达式提高了SQL灉|性?br />无关的空白检,或者分解多个正则组成的字符串等问题?br />10g支持正则表达式的四个新函数分别是QREGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和REGEXP_REPLACE?br />正则表达式代替了老的癑ֈP%Q和通配W(_Q字W?br />匚w输入字符串的开始位|,在方括号表达式中使用Q此时它表示不接受该字符集合?br />匚w前面的子表达式零ơ或一ơ?/div>
目前Q正则表辑ּ已经在很多Y件中得到q泛的应用,包括*nixQLinux, Unix{)(j)QHP{操作系l,PHPQC#QJava{开发环境?br />
Oracle 10g正则表达式提高了SQL灉|性。有效的解决了数据有效性, 重复词的辨认, 无关的空白检,或者分解多个正则组?br />的字W串{问题?br />
Oracle 10g支持正则表达式的四个新函数分别是QREGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和REGEXP_REPLACE?br />它们使用POSIX 正则表达式代替了老的癑ֈP%Q和通配W(_Q字W?br />
Ҏ(gu)字符Q?br />'^' 匚w输入字符串的开始位|,在方括号表达式中使用Q此时它表示不接受该字符集合?br />'$' 匚w输入字符串的l尾位置。如果设|了 RegExp 对象?Multiline 属性,?$ 也匹?'n' ?'r'?br />'.' 匚w除换行符 n之外的Q何单字符?br />'?' 匚w前面的子表达式零ơ或一ơ?br />'*' 匚w前面的子表达式零ơ或多次?br />'+' 匚w前面的子表达式一ơ或多次?br />'( )' 标记一个子表达式的开始和l束位置?br />'[]' 标记一个中括号表达式?br />'{m,n}' 一个精地出现ơ数范围Qm=<出现ơ数<=nQ?{m}'表示出现mơ,'{m,}'表示臛_出现mơ?br />'|' 指明两项之间的一个选择。例?^([a-z]+|[0-9]+)$'表示所有小写字母或数字l合成的字符丌Ӏ?br />num 匚w numQ其?num 是一个正整数。对所获取的匹配的引用?br />正则表达式的一个很有用的特Ҏ(gu)可以保存子表辑ּ以后使用Q?被称为Backreferencing. 允许复杂的替换能?br />如调整一个模式到新的位置或者指C代替的字W或者单词的位置. 被匹配的子表辑ּ存储在(f)时缓冲区中,
~冲Z左到右编? 通过数字W号讉K?下面的例子列Z把名?aa bb cc 变成
cc, bb, aa.
Select REGEXP_REPLACE('aa bb cc','(.*) (.*) (.*)', '3, 2, 1') FROM dualQ?br />REGEXP_REPLACE('ELLENHILDISMIT
cc, bb, aa
'' 转义W?br />
字符:(x)
[[:alpha:]] M字母?br />[[:digit:]] M数字?br />[[:alnum:]] M字母和数字?br />[[:space:]] M白字W?br />[[:upper:]] M大写字母?br />[[:lower:]] M写字母?br />[[:punct:]] M标点W号?br />[[:xdigit:]] M16q制的数字,相当于[0-9a-fA-F]?br />
各种操作W的q算优先U?br />转义W?br />(), (?:), (?=), [] 圆括号和Ҏ(gu)?br />*, +, ?, {n}, {n,}, {n,m} 限定W?br />^, $, anymetacharacter 位置和顺?br />| “?#8221;操作

--试数据
create table test(mc varchar2(60));

insert into test values('112233445566778899');
insert into test values('22113344 5566778899');
insert into test values('33112244 5566778899');
insert into test values('44112233 5566 778899');
insert into test values('5511 2233 4466778899');
insert into test values('661122334455778899');
insert into test values('771122334455668899');
insert into test values('881122334455667799');
insert into test values('991122334455667788');
insert into test values('aabbccddee');
insert into test values('bbaaaccddee');
insert into test values('ccabbddee');
insert into test values('ddaabbccee');
insert into test values('eeaabbccdd');
insert into test values('ab123');
insert into test values('123xy');
insert into test values('007ab');
insert into test values('abcxy');
insert into test values('The final test is is is how to find duplicate words.');

commit;

一、REGEXP_LIKE

select * from test where regexp_like(mc,'^a{1,3}');
select * from test where regexp_like(mc,'a{1,3}');
select * from test where regexp_like(mc,'^a.*e$');
select * from test where regexp_like(mc,'^[[:lower:]]|[[:digit:]]');
select * from test where regexp_like(mc,'^[[:lower:]]');
Select mc FROM test Where REGEXP_LIKE(mc,'[^[:digit:]]');
Select mc FROM test Where REGEXP_LIKE(mc,'^[^[:digit:]]');

二、REGEXP_INSTR

Select REGEXP_INSTR(mc,'[[:digit:]]$') from test;
Select REGEXP_INSTR(mc,'[[:digit:]]+$') from test;
Select REGEXP_INSTR('The price is $400.','$[[:digit:]]+') FROM DUAL;
Select REGEXP_INSTR('onetwothree','[^[[:lower:]]]') FROM DUAL;
Select REGEXP_INSTR(',,,,,','[^,]*') FROM DUAL;
Select REGEXP_INSTR(',,,,,','[^,]') FROM DUAL;

三、REGEXP_SUBSTR

SELECT REGEXP_SUBSTR(mc,'[a-z]+') FROM test;
SELECT REGEXP_SUBSTR(mc,'[0-9]+') FROM test;
SELECT REGEXP_SUBSTR('aababcde','^a.*b') FROM DUAL;

四、REGEXP_REPLACE

Select REGEXP_REPLACE('Joe Smith','( ){2,}', ',') AS RX_REPLACE FROM dual;
Select REGEXP_REPLACE('aa bb cc','(.*) (.*) (.*)', '3, 2, 1') FROM dualQ?br />
SQL> select * from test;

ID MC
-------------------- ------------------------------------------------------------
A AAAAA
a aaaaa
B BBBBB
b bbbbb

SQL> select * from test where regexp_like(id,'b','i'); --不区分数据大写

ID MC
-------------------- ------------------------------------------------------------
B BBBBB
b bbbbb

#End


abing 2012-10-11 20:58 发表评论
]]>
Oracle正则表达式的用法http://www.tkk7.com/abin/archive/2012/10/11/389435.htmlabingabingThu, 11 Oct 2012 12:06:00 GMThttp://www.tkk7.com/abin/archive/2012/10/11/389435.htmlhttp://www.tkk7.com/abin/comments/389435.htmlhttp://www.tkk7.com/abin/archive/2012/10/11/389435.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/389435.htmlhttp://www.tkk7.com/abin/services/trackbacks/389435.html阅读全文

abing 2012-10-11 20:06 发表评论
]]>
oracle replace translatehttp://www.tkk7.com/abin/archive/2012/10/11/389433.htmlabingabingThu, 11 Oct 2012 11:55:00 GMThttp://www.tkk7.com/abin/archive/2012/10/11/389433.htmlhttp://www.tkk7.com/abin/comments/389433.htmlhttp://www.tkk7.com/abin/archive/2012/10/11/389433.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/389433.htmlhttp://www.tkk7.com/abin/services/trackbacks/389433.html

要比较:(x)

      replace 字符串别的代替

     如:(x)SELECT REPLACE('accd','cd','ef') from dual; --> aefd

 

     translate 字符U别的代?/span>

     如:(x)select translate('acdd','cd','ef') from dual; -->aeff


replaceQ?要更改的字W串','被替换掉的字W串','替换字符?Q?/p>

例:(x)select  replace ('111222333444','222','888') from dual;

输出?'111888333444'


分别详解

     replaceQ?/strong>

     语法QREPLACE(char,search_string[,replacement_string])

     解释Qreplace中,每个search_string都被replacement_string所代替

        select replace('acdd','cd','ef') from dual; --> aefd

 

     如果replacement_string为空或ؓ(f)nullQ那么所有的search_string都被U除

     select replace('acdd','cd','') from dual; --> ad

 

     如果search_string 为nullQ那么就q回原来的char

     select replace('acdd','ef') from dual; -->acdd

     select replace('acdd','','') from dual; -->acdd(也是两者都为空的情?

 

 

      translate:

      语法QTRANSLATE('char','from_string','to_string')

      解释Qtranslate中,每个from_string中的字符被to_string?/span>

        

        举例说明Q?/span>


        select translate('asd12fg','12','55') from dual



abing 2012-10-11 19:55 发表评论
]]>
oracle substrhttp://www.tkk7.com/abin/archive/2012/10/11/389422.htmlabingabingThu, 11 Oct 2012 09:49:00 GMThttp://www.tkk7.com/abin/archive/2012/10/11/389422.htmlhttp://www.tkk7.com/abin/comments/389422.htmlhttp://www.tkk7.com/abin/archive/2012/10/11/389422.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/389422.htmlhttp://www.tkk7.com/abin/services/trackbacks/389422.htmloracle的substr函数的用?br /> 取得字符串中指定起始位置和长度的字符?nbsp;  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'

  select substr('Thisisatest', -4, 2) value from dual    l果?nbsp;  te

select substr('emros',-3,1) value from dual      l果?r

 

substr('abcde',-6) = null
substr('abcde',-5) = 'abcde'
substr('abcde',-4) = 'bcde'
substr('abcde',-3) = 'cde'
substr('abcde',-2) = 'de'
substr('abcde',-1) = 'e'
substr('abcde',-0) = 'abcde'



abing 2012-10-11 17:49 发表评论
]]>
oracle instrhttp://www.tkk7.com/abin/archive/2012/10/11/389421.htmlabingabingThu, 11 Oct 2012 09:46:00 GMThttp://www.tkk7.com/abin/archive/2012/10/11/389421.htmlhttp://www.tkk7.com/abin/comments/389421.htmlhttp://www.tkk7.com/abin/archive/2012/10/11/389421.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/389421.htmlhttp://www.tkk7.com/abin/services/trackbacks/389421.html  (源字W串, 目标字符? 起始位置, 匚w序号)

  ?a rel="nofollow" target="_blank">Oracle/PLSQL中,instr函数q回要截取的字符串在源字W串中的位置。只(g)索一ơ,是说从字符的开?/p>

  到字W的l尾q束?/p>

  语法如下Q?/p>

  instr( string1, string2 [, start_position [, nth_appearance ] ] )

  参数分析Q?/p>

  string1

  源字W串Q要在此字符串中查找?/p>

  string2

  要在string1中查扄字符?

  start_position

  代表string1 的哪个位|开始查找。此参数可选,如果省略默认?. 字符串烦(ch)引从1开始。如果此参数为正Q从左到叛_始检索,如果此参Cؓ(f)负,从右到左(g)索,q回要查扄字符串在源字W串中的开始烦(ch)引?/p>

  nth_appearance

  代表要查扄几次出现的string2. 此参数可选,如果省略Q默认ؓ(f) 1.如果数系l会(x)报错?/p>

  注意Q?/p>

  如果String2在String1中没有找刎ͼinstr函数q回0.



CZ如下Q?br />

select instr('adsda','a') from dual
select instr('adsda','a',1,2) from dual
select instr('adsda','a',-1,2) from dual








abing 2012-10-11 17:46 发表评论
]]>
oracle regexp_like介绍和例?/title><link>http://www.tkk7.com/abin/archive/2012/10/11/389418.html</link><dc:creator>abing</dc:creator><author>abing</author><pubDate>Thu, 11 Oct 2012 09:37:00 GMT</pubDate><guid>http://www.tkk7.com/abin/archive/2012/10/11/389418.html</guid><wfw:comment>http://www.tkk7.com/abin/comments/389418.html</wfw:comment><comments>http://www.tkk7.com/abin/archive/2012/10/11/389418.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/abin/comments/commentRss/389418.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/abin/services/trackbacks/389418.html</trackback:ping><description><![CDATA[<p>ORACLE中的支持正则表达式的函数主要有下面四个:(x)<br />1QREGEXP_LIKE Q与LIKE的功能相?br />2QREGEXP_INSTR Q与INSTR的功能相?br />3QREGEXP_SUBSTR Q与SUBSTR的功能相?br />4QREGEXP_REPLACE Q与REPLACE的功能相?br />它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同Q?br />但是它们使用POSIX 正则表达式代替了老的癑ֈP%Q和通配W(_Q字W?br />POSIX 正则表达式由标准的元字符QmetacharactersQ所构成Q?br />'^' 匚w输入字符串的开始位|,在方括号表达式中使用Q此时它表示不接受该字符集合?br />'$' 匚w输入字符串的l尾位置。如果设|了 RegExp 对象? Multiline 属性,?$ 也匹<br />?'\n' ?'\r'?br />'.' 匚w除换行符之外的Q何单字符?br />'?' 匚w前面的子表达式零ơ或一ơ?br />'+' 匚w前面的子表达式一ơ或多次?br />'*' 匚w前面的子表达式零ơ或多次?br />'|' 指明两项之间的一个选择。例?^([a-z]+|[0-9]+)$'表示所有小写字母或数字l合成的<br />字符丌Ӏ?br />'( )' 标记一个子表达式的开始和l束位置?br />'[]' 标记一个中括号表达式?br />'{m,n}' 一个精地出现ơ数范围Qm=<出现ơ数<=nQ?{m}'表示出现mơ,'{m,}'表示臛_<br />出现mơ?br />\num 匚w numQ其? num 是一个正整数。对所获取的匹配的引用?br />字符:(x) <br />[[:alpha:]] M字母?br />[[:digit:]] M数字?br />[[:alnum:]] M字母和数字?br />[[:space:]] M白字W?br />[[:upper:]] M大写字母?br />[[:lower:]] M写字母?br />[[:punct:]] M标点W号?br />[[:xdigit:]] M16q制的数字,相当于[0-9a-fA-F]?br />各种操作W的q算优先U?br />\转义W?br />(), (?:), (?=), [] 圆括号和Ҏ(gu)?br />*, +, ?, {n}, {n,}, {n,m} 限定W?br />^, $, anymetacharacter 位置和顺?br />| <br />*/<br />--创徏?br />create table fzq<br />(<br />id varchar(4),<br />value varchar(10)<br />);<br />--数据插入<br />insert into fzq values<br />('1','1234560');<br />insert into fzq values<br />('2','1234560');<br />insert into fzq values<br />('3','1b3b560');<br />insert into fzq values<br />('4','abc');<br />insert into fzq values<br />('5','abcde');<br />insert into fzq values<br />('6','ADREasx');<br />insert into fzq values<br />('7','123 45');<br />insert into fzq values<br />('8','adc de');<br />insert into fzq values<br />('9','adc,.de');<br />insert into fzq values<br />('10','1B');<br />insert into fzq values<br />('10','abcbvbnb');<br />insert into fzq values<br />('11','11114560');<br />insert into fzq values<br />('11','11124560');<br />--regexp_like<br />--查询value中以1开?0l束的记录ƈ且长度是7?br />select * from fzq where value like '1____60';<br />select * from fzq where regexp_like(value,'1....60');<br />--查询value中以1开?0l束的记录ƈ且长度是7位ƈ且全部是数字的记录?br />--使用like׃是很好实C?br />select * from fzq where regexp_like(value,'1[0-9]{4}60');<br />-- 也可以这样实玎ͼ使用字符集?br />select * from fzq where regexp_like(value,'1[[:digit:]]{4}60');<br />-- 查询value中不是纯数字的记?br />select * from fzq where not regexp_like(value,'^[[:digit:]]+$');<br />-- 查询value中不包含M数字的记录?br />select * from fzq where regexp_like(value,'^[^[:digit:]]+$');<br />--查询?2或?b开头的记录.不区分大写?br />select * from fzq where regexp_like(value,'^1[2b]','i');<br />--查询?2或?b开头的记录.区分大小写?br />select * from fzq where regexp_like(value,'^1[2B]');<br />-- 查询数据中包含空白的记录?br />select * from fzq where regexp_like(value,'[[:space:]]');<br />--查询所有包含小写字母或者数字的记录?br />select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');<br />--查询M包含标点W号的记录?br />select * from fzq where regexp_like(value,'[[:punct:]]');</p> <p>例子Q判断姓名是否ؓ(f)I,于两个字符Q包含数字和字母</p> <p>create or replace<br />FUNCTION CheckName(NameStr in VARCHAR2) RETURN integer<br />As<br />BEGIN<br />--W合q回1Q不W合q回0<br />   if(NameStr is null or length(NameStr)<2) then<br />      return 0;<br />   else<br />      if(NameStr like '%未取?') then<br />       RETURN 0;<br />       end if;<br />       if regexp_like(NameStr,'^([a-z]+|[0-9]+|[A-Z]+)$') then<br />       return 0;<br />       end if; <br />       return 1;      <br />   end if;<br />END CheckName;</p><img src ="http://www.tkk7.com/abin/aggbug/389418.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/abin/" target="_blank">abing</a> 2012-10-11 17:37 <a href="http://www.tkk7.com/abin/archive/2012/10/11/389418.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle正则表达?一)http://www.tkk7.com/abin/archive/2012/10/11/389413.htmlabingabingThu, 11 Oct 2012 09:09:00 GMThttp://www.tkk7.com/abin/archive/2012/10/11/389413.htmlhttp://www.tkk7.com/abin/comments/389413.htmlhttp://www.tkk7.com/abin/archive/2012/10/11/389413.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/389413.htmlhttp://www.tkk7.com/abin/services/trackbacks/389413.html

需求:(x)

匚w手机PW一位可以是+Q可以没?Q后面的全部要是数字Q如Q?/p>

+861359415665

8613659558555

1356856455

都是合法的?/p>+aa156945555

aa1359556666

aaddssdfdfsd

都是不合法的?/p>

正则Q?/p>

[sql]
  1. SQL> SELECT * FROM DUAL WHERE regexp_like('+333333' ,'^[\+]*[[:digit:]]+');      --?转义或者不转义Q结果是一L(fng)   
  2.   
  3. DUMMY  
  4. -----   
  5. X  

[sql]

  1. SQL> SELECT * FROM DUAL WHERE regexp_like('aa333333' ,'^[+]*[[:digit:]]+');  
  2.   
  3. DUMMY  
  4. -----  

解释Q?/p>

1.^代表开始,*表示出现0ơ或多次Q?表示出现1ơ或多次Q[:digit:]代表0-9的纯数字Q还?代表以什么结,如果是[[:digit:]]+$代表以数字结)(j)。该正则的意思就是:(x)

?0ơ或多次开_(d)紧接着后面数字出现一ơ或多次Q即一定要有数字)(j)?/p>

2.dual表中Q永q只?行记录。查询出dual中有记录Q证明where条g成立Q反之不成立?/p>

先前写了一个错误的正则Q?/p>

[sql]
  1. [\+]*[[:digit:]]+  

注意Q就只少了一个代表开始符L(fng)^。少了这个符P说明q个正则的意思是Q?/p>

+出现0ơ或多次Q即+可以出现Q可以不出现Q!Q,紧后面的数字出现1ơ或多次。前面已l?可以出现0ơ了Q证明没?也可以,那么是只要字符串中有数?+aa111aQaass11111……)Q这个正则恒成立Q错误深重啊Q!

Oracle正则表达式的应用by 温州--名次

在oracle里正则表辑ּ有四个函数可用,分别是regexp_like、regexp_substr、regexp_instr 和regexp_replace。这里在我们oracle 10g里灵zd用?/p>

       先来单介l一下正则表辑ּ的内容,正则表达式是做ؓ(f)快速查询的文本内容的,在linux应用比较多,首先Q行的v始与l束 “^”q个字符是表C只查找行首的内宏V?#8220;$”q个字符只查找行末的内容。接下来?#8220;^”q可以做Z个排除字W来使用。还是用例子来做一个演C比较明了一下?/p>

       q里我用regexp_likeq个函数来做Q这样可以我们^时会(x)使用的比较多?/p>

select * from test_table

where regexp_like(field_1,'^1234')

q个是表示是以1234打头的字W串是不是有匚w的。这里和like的方式是一L(fng)?/p>

 

 

select * from test_table

where regexp_like(field_1,'^[12]234')

q里多了一个[]q里做一个独立字W,q里表示是以1?开始,q且接着?34q个里的字符׃(x)是匹配的?/p>

 

 

select * from test_table

where regexp_like(field_1,'^(Ƨ阳|?二')

q里我们可以表达,q个查询一个姓是欧x李的Q名字叫二的字W串。这里多了一个(Q这个是做一个ؓ(f)字符串的方式来写的与[]刚好是对应?/p>

q里q有一?#8220;|”来表C或的意思?/p>

 

 

select * from test_table

where regexp_like(field_1,'^李[]*?)

q里我们可以查询李二或是李二Q再或者是李小二Q都可以Q这里我们需要讲一下是[]后面带了一?Q这个是表示0~无穷?字符d配。这个[]我们q可以添加一?#8220;+”来表C?~无穷大的字符d配,也可以更加精准一些,在[]后面{1,3}q里是表示1个到3个相同字W的匚w。还有一?#8220;?”来说表示1或是0个?/p>

 

 

select * from test_table

where regexp_like(field_1,'李[^]?)

q里我们可以查询到姓李的Q但是第二字不是“?#8221;q个字?/p>

 

 

select * from test_table

where regexp_like(field_1,'[0-9]')

q里是表C我们查询字W串含有0-9的数字的字符丌Ӏ?/p>

 

 

select * from test_table

where regexp_like(field_1,'[a-z]')

q里是表C我们查询字W串含有a-z的小写字母的字符丌Ӏ?/p>

 

 

select * from test_table

where regexp_like(field_1,'[A-z]')

q里是表C我们查询字W串含有A-z的所有字母的字符丌Ӏ?/p>

 

 

select * from test_table

where regexp_like(name,'[[:alpha:]]')

q里是表C查询匹配Q意字母,也包括中文字

 

 

select * from test_table

where regexp_like(name,'[[:alnum:]]')

q里是表C查询匹配Q意字母和数字

 

 

select * from test_table

where regexp_like(name,'[[:digit:]]')

q里是表C查询匹配Q意数?/p>

 

 

Select * from test_table

Where regexp_like(name,’of’,’i’)

q里是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}$’)

q样我们可以查询是不是ip格式

 

 

 

接下来介l一下regexp_substr

q个也是一个非常实用的一个函?/p>

 

 REGEXP_SUBSTR与SUBSTR函数相同Q返回截取的子字W串

REGEXP_SUBSTR(srcstr, pattern [, position [, occurrence [, match_option]]])

注:(x)

srcstr 源字W串

pattern 正则表达式样?/p>

position 开始匹配字W位|?/p>

occurrence 匚w出现ơ数

match_option 匚w选项Q区分大写Q?/p>

 

 

SELECT regexp_substr('1PSN/231_3253/ABc', '[[:alnum:]]+') FROM dual;

Output: 1PSN

[[:alnum:]]+ 表示匚w1个或者多个字母或数字字符

 

 

SELECT regexp_substr('1PSN/231_3253/ABc', '[[:alnum:]]+', 1, 2) FROM dual;

Output: 231

与上面一个例子相比,多了两个参数

1 表示从源字符串的W一个字W开始查扑֌?/p>

2 表示W?ơ匹配到的字W串Q默认值是“1”Q如上例Q?/p>

 

 

select regexp_substr('@@/231_3253/ABc','@*[[:alnum:]]+') from dual;

Output: 231

@* 表示匚w0个或者多个@

[[:alnum:]]+ 表示匚w1个或者多个字母或数字字符

注意Q需要区?#8220;+”?#8220;*”的区?/p>

 

 

select regexp_substr('1@/231_3253/ABc','@+[[:alnum:]]*') from dual;

Output: @

@+ 表示匚w1个或者多个@

[[:alnum:]]* 表示匚w0个或者多个字母或数字字符

 

 

select regexp_substr('1@/231_3253/ABc','@+[[:alnum:]]+') from dual;

Output: Null

@+ 表示匚w1个或者多个@

[[:alnum:]]+ 表示匚w1个或者多个字母或数字字符

 

 

select regexp_substr('@1PSN/231_3253/ABc125','[[:digit:]]+$') from dual;

Output: 125

[[:digit:]]+$ 表示匚w1个或者多个数字结字符

 

 

select regexp_substr('1@/231_3253/ABc','@+[[:alnum:]]+') from dual;

Output: Null

@+ 表示匚w1个或者多个@

[[:alnum:]]+ 表示匚w1个或者多个字母或数字字符

 

 

select regexp_substr('@1PSN/231_3253/ABc125','[[:digit:]]+$') from dual;

Output: 125

[[:digit:]]+$ 表示匚w1个或者多个数字结字符

 

 

select regexp_substr('@1PSN/231_3253/ABc','[^[:digit:]]+$') from dual;

Output: /ABc

[^[:digit:]]+$ 表示匚w1个或者多个不是数字结字符

 

 

select regexp_substr('Tom_Kyte@oracle.com','[^@]+') from dual;

Output: Tom_Kyte

[^@]+ 表示匚w1个或者多个不?#8220;@”的字W?/p>

 

 

select regexp_substr('1PSN/231_3253/ABc','[[:alnum:]]*',1,2)

from dual;

Output: Null

[[:alnum:]]* 表示匚w0个或者多个字母或者数字字W?/p>

注:(x)因ؓ(f)是匹?个或者多个,所以这里第2ơ匹配的?#8220;/”Q匹配了0ơ)(j)Q而不?#8220;231”Q所以结果是“Null”

 

 

q里我们有时候会(x)查询字符串里asdfafd<main>dafda q里我们要取?lt;main>q个字符?/p>

Select regexp_substr('asdfafd<main>dafda','<[^>]+>') from dual

Output: <main>

q里我们?lt;>中间M个^>q样在匹?lt;之后Q在向后查询的时候确保在匚w?gt;之前不再在有>,不然的话p有可以出错的情况?/p>

 

 

Select regexp_substr('asdfafd<main>da>fda','<[^<]+>') from dual

Output: <main>da>

在这个例子中Q我们在<main>之后q在da>Q这L(fng)话,如果我们没有d^>Q正则表辑ּ׃(x)向后l箋d配,直到最后一?gt;Q这样就?x)出现偏?/p>

 

 

q个通常用来实现字符串的列传?/p>

select regexp_substr('123;234;345;456;567;678;789','[^;]+',1,rownum) from dual

connect by rownum <= length('123;234;345;456;567;678;789') - length(replace('123;234;345;456;567;678;789',';'))+1

q里lengthq里操作是先得到有多个“;”Q再通过 connect by rownum方式来做一行成多行的操作,在变成多行之后,可以通过regexp_substr来取字符串的操作

 

 

接着上一个例?/p>

a,b,c,d,e,d,f,a,nq样的一个字W串Q我们现在要把字W串里一些重复去掉,q样的话l果是a,b,c,d,e,f,nL了d与a的两个字W串

select wm_concat(new_row) from (

select distinct regexp_substr('a,b,c,d,e,d,f,a,n','[^,]+',1,rownum) new_row from dual

connect by rownum<=length('a,b,c,d,e,d,f,a,n')-length(replace('a,b,c,d,e,d,f,a,n',',')))

通过转成多行的,再用distinct L重复Q然后我们再通过wm_concat来字W串合ƈ来完成?/p>

 

 

再来一个ip格式转换的例子吧Q我们一般的IP的格式是12.19.168.27现在要不?位的补前面?Q结果是012.019.168.027

select wm_concat(new_value) from (

select

lpad(regexp_substr('12.19.168.27','[^.]+',1,rownum) ,3,'0') new_value,rownum

from dual

connect by rownum<5

order by rownum)

 

 

来一个验证IP是数字是否正?/p>

select count(*) from(

select

lpad(regexp_substr('12.19.168.27','[^.]+',1,rownum) ,3,'0') new_value,rownum

from dual

connect by rownum<5)

where new_value>=0 and new_value<256

having count(*) =4

 

 

来一个IP字符串格式{换成数字型IP

select sum(new_value*power(256,4-rm)) from (

select regexp_substr('12.19.168.27','[^.]+',1,rownum) new_value,rownum rm from dual

connect by rownum<=4

)

 

 

接下来介l一个regexp_instr函数

 

REGEXP_INSTR 函数使用正则表达式返回搜索模式的L(fng)和终炏VREGEXP_INSTR 的语法如下所C。REGEXP_INSTR q回一个整敎ͼ指出搜烦(ch)模式的开始或l束的位|,如果没有发现匚w的|则返??/p>

 

语法Q?/p>

2.REGEXP_INSTR与INSTR函数相同Q返回字W串位置

REGEXP_INSTR(srcstr, pattern [, position [, occurrence [, return_option [,match_option]]]])

与REGEXP_SUBSTR一P它也有变量pattern、position(开始位|?、occurrence 和match_parameterQ这里主要介l一下新参数return_option 的作用,它允许用户告诉OracleQ模式出现的时候,要返回什么内宏V?/p>

 

Select regexp_instr('asdfafd<main>da>fda','sd') from dual

Output:2

q里L询sd的位|,q个和instr是在相同?/p>

 

 

Select regexp_instr('asdfafd<main>da>fda','da',1,2) from dual

q里是查询daW二出现的位|?/p>

 

q有我们l常?x)遇CU情冉|Q查询某个字D,如果是等?#8220;上v”?#8220;北京”或者我们温州就写成大城市,其它的写成小城市Q我们一般会(x)考虑使用decodeq种方式

 

Select decode('上v','上v','大城?,'北京' ,'大城? ,'温州' ,'大城?,'城?) from dual

只有两个我们可能觉的sql也不是很冗长Q如果有四五个的话,有炚w了,q里使用regexp_instr可以很多的L?/p>

 

Select decode (regexp_instr('北京','^(上v|北京|温州)'),0,'城?, '大城?) from dual

通过regexp_instr不匹配时?的条Ӟq样可以完成了

 

 

 

最后一个函数regexp_replace

REGEXP_REPLACE 函数是用另外一个值来替代串中的某个倹{例如,可以用一个匹配数字来替代字母的每一ơ出现。REGEXP_REPLACE的格式如下所C?/p>

 

语法Q?/p>

4.REGEXP_REPLACE与REPLACE函数相同Q替换原字符串中的字W内?/p>

REGEXP_REPLACE(srcstr, pattern [,replacestr [, position [, occurrence [,match_option]]]])

 

 

q个替换函数q是一个非常好用的?/p>

如我们在有一个字W串adfadfa (main) next 现在我们要把()替换?lt;>Q这里我们可能想用replace可以搞定了Q但是我们现在做的是(之后必须?q样?)我们才替换把<>.

select regexp_replace('adfadfa (main) next ','(\()([^\)]*)(\))','<\2>') from dual

output: adfadfa <main> next

q里q是一个\做ؓ(f)转义字符?/p>

 

再来一个ip格式转换的例子吧Q我们一般的IP的格式是12.19.168.27现在要不?位的补前面?Q结果是012.019.168.027

select regexp_replace(

regexp_replace('12.19.168.27','([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})',

'00\1.00\2.00\3.00\4') ,

'([0-9]*)([0-9]{3}\.)([0-9]*)([0-9]{3}\.)([0-9]*)([0-9]{3}\.)([0-9]*)([0-9]{3}$)','\2\4\6\8')

from dual

output: 012.019.168.027

q里我分成两步来操作Qregexp_replace('12.19.168.27','([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})',

'00\1.00\2.00\3.00\4')我首先让每个字W串做添?Q这h个字W串都会(x)大于3Q再

'([0-9]*)([0-9]{3}\.)([0-9]*)([0-9]{3}\.)([0-9]*)([0-9]{3}\.)([0-9]*)([0-9]{3}$)','\2\4\6\8')

q整个字W串分成8D,q样我们只要2???q四个段可以了?/p>

 

 

下面一个例子中Q在每两个字W之间插入一个空格符

SELECT regexp_replace('YAHOO', '(.)', '\1 ') AS output FROM dual;

Output: Y A H O O

q个用一个@环的方式L作,q蛮好的?/p>

 

 

select regexp_replace(

regexp_replace('12.19.168.27','([^.]+)'

,'00\1')

,'([^.]*)([^.]{3})','\2')

from dual

接着刚才那个Q我们可以把replace循环替换的方式来操作?/p>

abing 2012-10-11 17:09 发表评论
]]>
Oracle regexhttp://www.tkk7.com/abin/archive/2012/10/11/389412.htmlabingabingThu, 11 Oct 2012 09:03:00 GMThttp://www.tkk7.com/abin/archive/2012/10/11/389412.htmlhttp://www.tkk7.com/abin/comments/389412.htmlhttp://www.tkk7.com/abin/archive/2012/10/11/389412.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/389412.htmlhttp://www.tkk7.com/abin/services/trackbacks/389412.html正则表达式,l我写个1,2,3,4 或?,1,2,3   匚w? ?nbsp;
select regexp_substr('1,2,3,4','[4]') tony from dual;
select regexp_substr('4,3,2,1','[4]') tony from dual;
oracle  验证?sh)话L(fng)(手机L(fng))Q?br />
/**
 * 手机L(fng)
 * UdQ?34[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
 * 联通:(x)130,131,132,152,155,156,185,186
 * ?sh)信Q?33,1349,153,180,189
 */
select t.* from myregex t where regexp_like(t.name,'^1(3[0-9]|5[0-35-9]|8[025-9])[0-9]{8}$')
select t.* from myregex t where regexp_like(t.name,'^1(3[0-9]|5[0-35-9]|8[025-9])?[0-9]{8}?$')
select t.* from myregex t where regexp_like(t.name,'^1(3[[:digit:]]|5[0-35-9]|8[025-9])?[[:digit:]]{8}?$')
/**
 * 中国UdQChina Mobile
 * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
 */
select t.* from myregex t where regexp_like(t.name,'^1(34[0-8]?|3[5-9]?|5[017-9]?|8[278]?)[0-9]{8}$')
select t.* from myregex t where regexp_like(t.name,'^1(34[0-8]?|3[5-9]?|5[017-9]?|8[278]?)[[:digit:]]{8}$')
/**
 * 中国联通:(x)China Unicom
 * 130,131,132,152,155,156,185,186
 */
select t.* from myregex t where regexp_like(t.name,'^1(3[0-2]?|5[25-6]?|8[5-6]?)[0-9]{8}$')
select t.* from myregex t where regexp_like(t.name,'^1(3[0-2]?|5[25-6]?|8[5-6]?)[[:digit:]]{8}$')
/**
 * 中国?sh)信QChina Telecom
 * 133,1349,153,180,189
 */
select t.* from myregex t where regexp_like(t.name,'^1((33?|53?|8[09]?)[0-9]?|349)[0-9]{7}$')
select t.* from myregex t where regexp_like(t.name,'^1((33?|53?|8[09]?)[0-9]?|349)[[:digit:]]{7}$')




abing 2012-10-11 17:03 发表评论
]]>
Oracle NVL NVL2 NULLIFhttp://www.tkk7.com/abin/archive/2012/10/11/389376.htmlabingabingThu, 11 Oct 2012 05:58:00 GMThttp://www.tkk7.com/abin/archive/2012/10/11/389376.htmlhttp://www.tkk7.com/abin/comments/389376.htmlhttp://www.tkk7.com/abin/archive/2012/10/11/389376.html#Feedback0http://www.tkk7.com/abin/comments/commentRss/389376.htmlhttp://www.tkk7.com/abin/services/trackbacks/389376.htmlNULL指的是空|或者非法倹{?br /> NVL (expr1, expr2)->expr1为NULLQ返回expr2Q不为NULLQ返回expr1。注意两者的cd要一?
NVL2 (expr1, expr2, expr3) ->expr1不ؓ(f)NULLQ返回expr2Qؓ(f)NULLQ返回expr3。expr2和expr3cd不同的话Qexpr3?x){换ؓ(f)expr2的类?
select t.empno,nvl2(t.mgr,'the value is not null','the value is null') from emp t where t.deptno in (select s.deptno from dept s where s.deptno='1')
NULLIF (expr1, expr2) ->相等q回NULLQ不{返回expr1
select t.empno,nullif(t.mgr,'tom') from emp t where t.deptno in (select s.deptno from dept s where s.deptno='1')


abing 2012-10-11 13:58 发表评论
]]>
վ֩ģ壺 Ʒ޳aƬ߹ۿ| Ļ| ģ߹ۿ| aëƬa| ҹɫһ| ߹۹Ļ| վ߹ۿ| | ëƬѹۿƵ| ޴Ů߹ۿ| ᰡͣѿ| ɫٸ߳18p| СƵѹۿ| ձ岻Ļ| þþþAV| 99Ƶ| ŮƵ| ëɫëƬѹۿ| лиëƬѿ| ˾þۺ| ѹվ߹ۿƵ| ޳aƬ߹| xxxxƵ| ɫͷۺƵ| AVպƷþþþþþ| ĻƵ| պĻۺ| ԰߹ۿ޻ɫһƬ| һ | 18ֹվ | ޾ƷƬ| ޹˾Ʒþþþþۺ | 91һ߹ۿ| պƵ| ɫaƬѿ| ޸߹ۿ| Ů糱ëƬѲ| ĻӰӾþþ| þAV| ѻɫСƵվ| ѰvƷƵַ|