精华内容
下载资源
问答
  • ORACLE正则表达式函数详解Oracle10g提供了四个正则表达式函数regexp function: REGEXP_LIKE, REGEXP_REPLACE,REGEXP_INSTR,REGEXP_SUBSTR。REGEXP_LIKE:(匹配) 比较一个字符串是否与正则表达式匹配(srcstr, pattern...

    ORACLE正则表达式函数详解

    Oracle10g提供了四个正则表达式函数regexp function: REGEXP_LIKE, REGEXP_REPLACE,REGEXP_INSTR,REGEXP_SUBSTR。

    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]]]])

    srcstr:        被查找的字符数据。

    pattern:       正则表达式。

    occurrence:    出现的次数。默认为1。

    position:      开始位置

    return_option: 默认值为0,返回该模式的起始位置;值为1则返回符合匹配条件的下一个字符的起始位置。

    replacestr:    用来替换匹配模式的字符串。

    match_option:  匹配方式选项。缺省为c。

    c:case sensitive

    I:case insensitive

    n:(.)匹配任何字符(包括newline)

    m:字符串存在换行的时候被作为多行处理

    ##################################################################################

    正则表达式由以下标准的元字符(metacharacters)所构成:

    字符

    [[:alpha:]]任何字母。[A-Za-z]

    [[:digit:]]任何数字。[0-9]

    [[:alnum:]]任何字母和数字。[A-Za-z0-9]

    [:blank:]   [ ],标准是空格和TAB,但Oracle里只有空格!

    [:cntrl:]   CONTROL键

    [:graph:]  即所有可见字符,不包括空格

    [:print:]  可打印字符 ,即空格+所有可见字符

    [[:space:]] 空白字符。

    [[:punct:]] 任何标点符号。

    [[:upper:]] 任何大写字母。[A-Z]

    [[:lower:]] 任何小写字母。[a-z]

    [[:xdigit:]]任何16进制的数字,相当于[0-9a-fA-F]。

    #######

    [:class:]   字符类。class如alnum、digit等。

    [.element.] 整理类。受NLS_SORT影响。将多字节字符当作单字节字符看待。如在西班牙语中ch、ll都是用多字节表示的单字节。

    [=char=]    等同类。在当前语言(Locale)下,匹配所有的属于相同的POSIX等同类字符指定的字符。如在西班牙语中,[[=n=]]指定了等同类字符n,它可以匹配El Ni?o中的N和 ?.

    ###########################################################################

    边界符集合

    ^   每一行的开头,单行模式下等价于字符串的开头

    $   每一行的结尾,单行模式下等价于字符串的结尾

    在单行模式下,^和\A等价,$和\Z等价。

    ##########################################################################

    重复次数集合

    *   匹配零次或多次--尽可能多的次数

    ?   零次或一次

    +   一次或多次

    {m} {m}?正好m次,贪婪与非贪婪一样的

    {m,}    {m,}?至少m次

    {m, n}  {m, n}?最少m最多n次

    在上述字符后加?,如:*?,即为非贪婪模式。

    贪婪模式会获取尽可能多的字符,而非贪婪模式会获取尽可能少的字符

    ###############################################################

    组合操作符

    […]     方括号内任意字符或字符集合中的一个。在其中所有的操作符号都被视为普通符号,但以下除外:

    ★范围操作符:- 但当"-"位于字符列表的第一个或最后一个字符时,或位于范围的结尾时,会被当作"-"本身来看待。

    当右方括号"]"出现在列表的第一个位置时,它会被当作"]"本身来处理。

    [^…]    方括号内^为第一个字符时,表示与其后所有字符都不匹配的字符

    (…)     圆括号,将复杂表达式当作单一表达式来处理

    ..|..    或

    abc      和。直接将字符连在一起写

    优先级比较:圆括号>重复次数操作符>和>或。

    例如,(f|ht)tps?: 表示

    ftp:

    ftps:

    http:

    https:

    ######################################################################

    匹配操作符

    \n      即后向引用。n为1~9,标识由圆括号里取得的匹配字符串。方向是从左到右。

    转义操作符

    \       将其后紧跟着的操作字符当作普通字符看待。

    例如 abc*def 可以匹配 abdef或abcccdef等,但无法匹配abc*def,后者需要abc\*def才能匹配

    ##################################################

    一条正则表达式匹配函数示例解析:

    SELECT * FORM tKHXX where  REGEXP_LIKE(SJHM,  '^[1]{1}[35]{1}[[:digit:]]{9}$' )

    这个语句是从表中查手机号。

    ^ 表示开始

    $ 表示结束

    []内部为匹配范围

    {}里的内容表时个数

    手机号码的特点是以 1开头接着是3或5再加9位的数字 所以这么理解

    1开头 表达式为 ^[1]{1} 意为 开始1位里包含1

    3或5 表达式为 [35]{1},即第二位包含有3或5的

    9位数字结束 为: [[:digit:]]{9}$ 这里[:digit:]为特殊写法,代表为数字,再加个结束符$。即最后9位是数字。

    #######################################################################

    后向引用(backreference):

    后向引用是一个很有用的特性。它能够把子表达式的匹配部分保存在临时缓冲区中,供以后重用。缓冲区从左至右进行编号,并利用 \digit 符号进行访问。子表达式用一组圆括号来显示。利用后向引用可以实现较复杂的替换功能。

    下面的regexp_replace('Steven Chen', '(.*) (.*)', '\2, \1')  此函数中,首先在正则表达式函数中,('Steven Chen', '(.*) (.*)', 其中两个圆括号中会匹配出Chen, Steven;再使用"\数字“的符号进行引用。

    http://blog.sina.com.cn/s/blog_69e7b8d701012tuj.html

    展开全文
  • 基本用法ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE:与LIKE的功能相似2,REGEXP_INSTR:与INSTR的功能相似3,REGEXP_SUBSTR:与SUBSTR的功能相似4,REGEXP_REPLACE:与REPLACE的功能相似它们在...

    Created by Marydon on 2017-11-23 14:25

    1.参考链接

    2.基本用法

    ORACLE中的支持正则表达式的函数主要有下面四个:

    1,REGEXP_LIKE :与LIKE的功能相似

    2,REGEXP_INSTR :与INSTR的功能相似

    3,REGEXP_SUBSTR :与SUBSTR的功能相似

    4,REGEXP_REPLACE :与REPLACE的功能相似

    它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,

    但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。

    POSIX 正则表达式由标准的元字符(metacharacters)所构成:

    '^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。

    '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹

    配 '\n' 或 '\r'。

    '.' 匹配除换行符之外的任何单字符。

    '?' 匹配前面的子表达式零次或一次。

    '+' 匹配前面的子表达式一次或多次。

    '*' 匹配前面的子表达式零次或多次。

    '|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的

    字符串。

    '( )' 标记一个子表达式的开始和结束位置。

    '[]' 标记一个中括号表达式。

    '{m,n}' 一个精确地出现次数范围,m=

    出现m次。

    \num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。

    字符簇:

    [[:alpha:]] 任何字母。

    [[:digit:]] 任何数字。

    [[:alnum:]] 任何字母和数字。

    [[:space:]] 任何白字符。

    [[:upper:]] 任何大写字母。

    [[:lower:]] 任何小写字母。

    [[:punct:]] 任何标点符号。

    [[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。

    3.常用的正则表达式

    用户名:/^[a-z0-9_-]{3,16}$/

    密码:/^[a-z0-9_-]{6,18}$/

    十六进制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/

    电子邮箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/

    URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

    IP 地址:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/

    HTML 标签:/^(.*)|\s+\/>)$/

    Unicode编码中的汉字范围:/^[u4e00-u9fa5],{0,}$/

    匹配中文字符的正则表达式: [\u4e00-\u9fa5]

    评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

    匹配双字节字符(包括汉字在内):[^\x00-\xff]

    评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

    匹配空白行的正则表达式:\n\s*\r

    评注:可以用来删除空白行

    匹配HTML标记的正则表达式:]*>.*?\1>|<.>

    评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

    匹配首尾空白字符的正则表达式:^\s*|\s*$

    评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

    匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

    评注:表单验证时很实用

    匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*

    评注:网上流传的版本功能很有限,上面这个基本可以满足需求

    匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

    评注:表单验证时很实用

    匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}

    评注:匹配形式如 0511-4405222 或 021-87888822

    匹配腾讯QQ号:[1-9][0-9]{4,}

    评注:腾讯QQ号从10000开始

    匹配中国大陆邮政编码:[1-9]\d{5}(?!\d)

    评注:中国大陆邮政编码为6位数字

    匹配身份证:\d{15}|\d{18}

    评注:中国大陆的身份证为15位或18位

    匹配ip地址:\d+\.\d+\.\d+\.\d+

    评注:提取ip地址时有用

    匹配特定数字:

    ^[1-9]\d*$    //匹配正整数

    ^-[1-9]\d*$   //匹配负整数

    ^-?[1-9]\d*$   //匹配整数

    ^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)

    ^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)

    ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数

    ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数

    ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数

    ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)

    ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)

    评注:处理大量数据时有用,具体应用时注意修正

    匹配特定字符串:

    ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串

    ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串

    ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串

    ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串

    ^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

    4.实际应用

    案例一:查询性别字段为不是纯数字的记录

    --方式一

    SELECT SEX FROM VIRTUAL_CARD WHERE NOT REGEXP_LIKE(SEX,'^[0-9]+$') OR SEX IS NULL;

    执行结果:

    点评:使用'^[0-9]+$'匹配的值必须全是正整数或0,值为空的需要单独判断

    --方式二

    SELECT SEX FROM VIRTUAL_CARD WHERE NOT REGEXP_LIKE(SEX,'^[[:digit:]]+$');

    执行结果:

    点评:使用'^[[:digit:]]+$'匹配的值必须全是正整数或0,值为空的需要单独判断

    --方式三

    SELECT SEX FROM VIRTUAL_CARD WHERE REGEXP_LIKE(SEX,'^[a-zA-Z]+$');

    执行结果:

    点评:

    使用'^[a-zA-Z]+$'匹配的值必须全是字母,值为空的需要单独判断;

    这种方式,中文不会被筛选出来;

    另外,匹配字母a-Z的表达式,正确用法为[a-zA-Z],[a-Z]是错误用法。

    --方式四

    SELECT SEX FROM VIRTUAL_CARD WHERE REGEXP_LIKE(SEX,'^[[:alpha:]]+$');

    执行结果:

    点评:

    使用'^[[:alpha:]]+$'匹配的值必须全是字母,值为空的需要单独判断;

    该表达式会将全是中文的记录筛选出来。

    --方式五

    SELECT SEX FROM VIRTUAL_CARD WHERE REGEXP_LIKE(SEX,'^[^[:digit:]]+$');

    执行结果:

    点评:

    使用'^[^[:digit:]]+$',表示:值里面不包含任何数字,匹配的值不包含数字的将会被筛选出来,

    换句话说,只要字段值里面有一个数字,则该条记录就不会被筛选出来。

    展开全文
  • 1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和RE...

    oracle正则表达式:入门容易,精通难。

    一、ORACLE中的支持正则表达式的函数主要有四个:

    1,REGEXP_LIKE :与LIKE的功能相似

    2,REGEXP_INSTR :与INSTR的功能相似

    3,REGEXP_SUBSTR :与SUBSTR的功能相似

    4,REGEXP_REPLACE :与REPLACE的功能相似

    它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,

    但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。

    二、 POSIX 正则表达式由标准的元字符(metacharacters)所构成:

    '^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。

    '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。

    '.' 匹配除换行符之外的任何单字符。

    '?' 匹配前面的子表达式零次或一次。

    '+' 匹配前面的子表达式一次或多次。

    '*' 匹配前面的子表达式零次或多次。

    '|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。

    '( )' 标记一个子表达式的开始和结束位置。

    '[]' 标记一个中括号表达式。

    '{m,n}' 一个精确地出现次数范围,m=

    \num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。

    三、 字符簇:

    [[:alphanum:]]匹配任何字母和数字。

    [[:alpha:]] 任何字母。

    [[:digit:]] 任何数字。

    [[:alnum:]] 任何字母和数字。

    [[:space:]] 任何白字符。

    [[:upper:]] 任何大写字母。

    [[:lower:]] 任何小写字母。

    [[:punct:]] 任何标点符号。

    [[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。

    四、各种操作符的运算优先级

    \转义符

    (),(?:),(?=),[] 圆括号和方括号

    *,+,?,{n},{n,},m} 限定符

    ^,$,anymetacharacter 位置和顺序

    |

    */

    五、Oracle REGEXP_LIKE介绍和例子

    --创建表

    create table fzq (id varchar2(4),value varchar2(10));

    --数据插入

    insert into fzq values ('1','1234560');

    insert into fzq values ('2','1234560');

    insert into fzq values ('3','1b3b560');

    insert into fzq values ('4','abc');

    insert into fzq values ('5','abcde');

    insert into fzq values ('6','ADREasx');

    insert into fzq values ('7','123 45');

    insert into fzq values ('8','adc de');

    insert into fzq values ('9','adc,.de');

    insert into fzq values ('10','1B');

    insert into fzq values ('10','abcbvbnb');

    insert into fzq values ('11','11114560');

    insert into fzq values ('11','11124560');

    --regexp_like

    --查询value中以1开头60结束的记录并且长度是7位

    select * from fzq where value like '1____60';

    select * from fzq where regexp_like(value,'1....60');

    select * from a where regexp_like(name_a,'d$');

    --查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。

    --使用like就不是很好实现了。

    select * from fzq where regexp_like(value,'^1[0-9]{4}60$');

    -- 也可以这样实现,使用字符集。

    select * from fzq where regexp_like(value,'1[[:digit:]]{4}60');

    -- 查询value中不是纯数字的记录

    select * from fzq where not regexp_like(value,'^[[:digit:]]+$');

    -- 查询value中不包含任何数字的记录。

    select * from fzq where regexp_like(value,'^[^[:digit:]]+$');

    --查询以12或者1b开头的记录.不区分大小写。

    select * from fzq where regexp_like(value,'^1[2b]','i');

    --查询以12或者1b开头的记录.区分大小写。

    select * from fzq where regexp_like(value,'^1[2B]');

    -- 查询数据中包含空白的记录。

    select * from fzq where regexp_like(value,'[[:space:]]');

    --查询所有包含小写字母或者数字的记录。

    select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');

    --查询任何包含标点符号的记录。

    select * from fzq where regexp_like(value,'[[:punct:]]');

    六、REGEXP_REPLACE(字符串替换函数) REPLACE 函数是用另外一个值来替代串中的某个值。例如,可以用一个匹配数字来替代字母的每一次出现。REPLACE 的格式如下所示: 原型:regexp_replace(x,pattern[,replace_string[,start[,occurence[match_option]]]]) 每个参数的意思分别是: x 待匹配的函数 pattern 正则表达式元字符构成的匹配模式 replace_string 替换字符串 start 开始位置 occurence 匹配次数 match_option 匹配参数,这里的匹配参数和regexp_like是完全一样的,可参考前面的一篇文章。 举例来讲: SQL> select regexp_replace('hello everybody,051courses will be over soon,thanks.','b[[:alpha:]]{3}','one') from dual; REGEXP_REPLACE('HELLOEVERYBODY,047COURSESWILLBEOVER --------------------------------------------------- hello everyone,thanks.

    展开全文
  • 一、REGEXP_LIKE--查找与正则表达式匹配的字符串。语法:REGEXP_LIKE(source_char, pattern[, match_param ])二、REGEXP_COUNT--计算模式在源串中出现的次数语法:REGEXP_COUNT (source_char, pattern [, position ...

    一、REGEXP_LIKE--查找与正则表达式匹配的字符串。

    语法:REGEXP_LIKE(source_char, pattern[, match_param ])

    二、REGEXP_COUNT--计算模式在源串中出现的次数

    语法:REGEXP_COUNT (source_char, pattern [, position [, match_param]])

    三、REGEXP_INSTR--返回模式在源串中的位置

    语法:REGEXP_INSTR (source_char, pattern

    [, position

    [, occurrence

    [, return_opt

    [, match_param

    [, subexpr]

    ]

    ]

    ]

    ]

    四、REGEXP_SUBSTR--返回模式

    语法:REGEXP_SUBSTR(source_char, pattern

    [, position

    [, occurrence

    [, match_param

    [, subexpr

    ]

    ]

    ]

    ]

    )

    五、REGEXP_REPLACE--替换源串中的文本

    语法:REGEXP_REPLACE(source_char, pattern

    [, replace_string

    [, position

    [, occurrence

    [, match_param ]

    ]

    ]

    ]

    )

    source_char:要搜索的字段。

    pattern:正则表达式。

    position:是一个正整数,表明oracle从源串左侧第几个位置开始搜索,可选,默认是1。

    occurrence:第几次出现,可选。

    return_opt:0代表开始位置,1代码结束位置。默认是0,可选。

    match_param:匹配的参数,可选。

    subexpr:子表达式,11g后开始支持此参数选项。可选。

    replace_string:替换文本。

    i:不区分大小写。

    c:区分大小写。

    n:允许句点(.)作为通配符去匹配换行符。如果省略该参数,则句点将不匹配换行符。。

    m:将source_char作为一个包含多行的字符串。

    x:忽略空白字符,默认情况下空白字符匹配自身。

    如果复合参数设置有矛盾,则oracle默认选后面的参数,如'ic',则默认区分大小写。

    如果指定的参数不是oracle在上述所定义的,则oracle返回一个错误。

    如果省略了match_param参数,则:

    1.区分大小写是由nls_sort参数的值决定的(此参数的默认值BINARY是区分大小写的)。

    SQL> conn /as sysdba

    已连接。

    SQL> select * from v$nls_parameters where parameter ='NLS_SORT';

    PARAMETER                       VALUE

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

    NLS_SORT                        BINARY

    SQL> select * from chn.fzq where regexp_like(chn.fzq.value,'^1[2b]');

    ID   VALUE

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

    1    1234560

    2    1234560

    3    1b3b560

    7    123  45

    1    1234560

    已选择5行

    SQL>  ALTER SESSION SET NLS_SORT='BINARY_CI';

    会话已更改

    SQL> select * from chn.fzq where regexp_like(chn.fzq.value,'^1[2b]');

    ID   VALUE

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

    1    1234560

    2    1234560

    3    1b3b560

    7    123  45

    10   1B

    1    1234560

    已选择6行。

    2.句点不匹配换行符。

    3.source_char被视为单行。

    Examples:

    1、REGEXP_LIKE:

    SQL> SELECT first_name, last_name

    FROM employees

    WHERE REGEXP_LIKE (first_name, '^Ste(v|ph)en$')

    ORDER BY first_name, last_name;

    FIRST_NAME           LAST_NAME

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

    Steven               King

    Steven               Markle

    Stephen              Stiles

    2、REGEXP_COUNT:

    SQL> SELECT REGEXP_COUNT('123123123123123', '(12)3', 1, 'i') REGEXP_COUNT

    FROM DUAL;

    REGEXP_COUNT

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

    5

    3、REGEXP_INSTR:

    SQL>SELECT

    REGEXP_INSTR('500 Oracle Parkway, Redwood Shores, CA','[^ ]+', 1, 6) "REGEXP_INSTR"

    FROM DUAL;

    REGEXP_INSTR

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

    37

    4、REGEXP_SUBSTR:

    SQL>SELECT REGEXP_SUBSTR('1234567890', '(123)(4(56)(78))', 1, 1, 'i', 1) "REGEXP_SUBSTR"

    FROM DUAL;

    REGEXP_SUBSTR

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

    123

    5、REGEXP_REPLACE:

    SQL>SELECT

    REGEXP_REPLACE(phone_number,

    '([[:digit:]]{3})\.([[:digit:]]{3})\.([[:digit:]]{4})',

    '(\1) \2-\3') "REGEXP_REPLACE"

    FROM employees

    ORDER BY "REGEXP_REPLACE";

    REGEXP_REPLACE

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

    (515) 123-4444

    (515) 123-4567

    (515) 123-4568

    (515) 123-4569

    (515) 123-5555

    . . .

    展开全文
  • 开发过程中遇到个需求,用户要提取的数据列中不包含 YF、ZF、JD的字符串, 方法1:select * from table where order_no not like '%YF%' and order_no not like '%ZF' andorder_no not like '%JD%' 感 觉方法1有点...
  • e '%,1,%' or name like '1,%' or name ='1' or name like '%,1' [/color] 亲测好用 [color=blue]出于数据库查询效率 应尽量避免在where 子句中使用or来连接条件,否则将导致引擎放弃使用索引而进行全表扫描 ...
  • 需要在oracle中用正则表达式筛选出符合下述规则的编号:开头是a,结尾是0,中间任意位置能出现cell这个单词 with a as ( select 'akcellp0' ss from dual union all select 'alcxlle0' from dual ...
  • 网上找了很久,都适用于Oracle,同样的东西拷贝来拷贝去的…… 看到某个大佬说“要用ascii码来定范围,那些根本不对”才恍然大悟。于是自己写了一个 select * form test where regexp_like(asciistr(t.rwmc),'[^...
  • Oracle LIKE ESCAPE子句

    千次阅读 2013-11-19 15:15:21
    LIKE条件指定搜索值包含的匹配模式。 语法 char1是一个字符表达式,例如一个字符列,叫做搜索值。 char2是一个字符表达式,通常是一个字面量,叫做模型。 esc_char是一个字符表达式,通常是一个字面量,叫做转义...
  • select * from 表名 c where (c.name='110' or c.gonghao='110') and c.state not like '%1%' order by c.id desc;
  • Oracle使用like查询时对下划线的处理

    千次阅读 2021-03-15 15:28:54
    Oracle使用like查询时对下划线的处理 如:查询ZJ_STANDARD_ITEM表的name1字段包含"_("的数据 --以下的查询语句执行会发现所查询的数据并不是我们想要数据 select * from ZJ_STANDARD_ITEM t where t.name1 like '%_...
  • oracle中,模糊查询使用like和 not like 。 item表中,log字段为备注,备注中存在“抽检”两个字的时候,不统计该项目。备注可以为null。 select * from item ...实际情况是:只有 备注不为null且备注不包含“...
  • 对某一个字段进行to_number处理时,因为部分数据中包含字母,所以报错ORA-01722: 无效数字 这样就需要先除去字母以及字母后面的字符--处理含有字母的数据update a_organ ...
  • 很简单,但是很多人一下估计还一定知道。 select * from system.test_tab1 where name like '%'||chr(13)||chr(10)||'%'
  • 如题,话多说直接上代码。 --Oracle select table_name from user_tables where table_name like '%关键字%' --MySQL SELECT distinct TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE '...
  • select * from table1 where exists (select 1 from table2 where table1.columA like '%' || ...然后发现还是不行 因为我要去取到不包含的部分 但是一旦notlike 就会全部取到了 所以还得配合相减 SELE...
  • 用于where比较条件的有 : 等于:=、<、<=、>、>=、<> >,< : 大于,小于 ...匹配测试:like、not like Null测试:is null、is not null 布尔链接:and、or、not Oracle通配符 : 在w
  • LIKE条件指定搜索值包含的匹配模式。 语法char1是一个字符表达式,例如一个字符列,叫做搜索值。char2是一个字符表达式,通常是一个字面量,叫做模型。esc_char是一个字符表达式,通常是一个字面量,叫做转义字符。...
  • Oracle 索引

    2011-04-14 12:49:00
    oracle like 上强制使用索引当where子句对某一列使用函数时,除非利用这个简单的技术强制索引,否则Oracle优化器能在查询中使用索引。通常情况下,如果在WHERE子句中使用诸如UPPER、REPLACE 或SUBSTRD等函数,就...
  • 模式可以包含常规字符和通配符字符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。然而,可 使用字符串的任意片段匹配通配符。与使用 = 和 != 字符串比较运算符相比,使用通配符可使 LIKE 运算符更加...
  • Oracle 大小写转换函数小写转大写UPPer大写转小写LOWER例:select lower...--是否包含字母(大写和小写)select case when regexp_like('123','.([a-z]+|[A-Z])') then '包含字母' else '不包含字母' end from dua...
  • 使用oracle查数据时,只要条件包含中文就查询到数据,后来问了项目经理,是编码问题,在我的sql语句中字符串前加了N解决,如: select * from T_BD_ACCOUNTBANKS t where fname_l2 like N'%恒生%' 但是如果每次都加上N...

空空如也

空空如也

1 2 3 4 5 6
收藏数 118
精华内容 47
关键字:

likeoracle不包含