oracle中如何匹配数字 oracle字符串匹配函数

在oracle中,想要筛选出含有阿拉伯数字,空格和.的字段,使用%通配符好像不行,求助高手

使用oracle中的正则匹配,基本规则和其他正则大同小异。

创新互联2013年开创至今,先为鹤壁等服务建站,鹤壁等地企业,进行企业商务咨询服务。为鹤壁企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

你可以用 REGEXP_LIKE 函数里面用正则表达式即可。

oracle中如何查找工号的数字部分。

用like就行

剩下的无非就是确定的数字是哪个,剩下的数字有几个的问题。这涉及到具体的like用法,这个往上很多,稍微查一下就有了。

在oracle中数字怎么模糊查询

LIKE 模糊查询

字符匹配操作可以使用通配符 “%” 和 “_”:

%:表示任意个字符,包括零个;

_:表示一个任意字符;

Connected to aspx?tid=12" target="_blank" title="Oracle"Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

Connected as scott

SQL select * from dept;

DEPTNO DNAME LOC

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

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

"%" 和 "_"演示:

SQL select * from dept where DNAME like '_A%';

DEPTNO DNAME LOC

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

30 SALES CHICAGO

ESCAPE 演示:

SQL insert into dept values(50,'BEIJING','JIANG%XI');

1 row inserted

SQL select * from dept;

DEPTNO DNAME LOC

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

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

50 BEIJING JIANG%XI

SQL select * from dept where loc like '%\%%' escape '\';

DEPTNO DNAME LOC

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

50 BEIJING JIANG%XI

SQL select * from dept where loc like '%e%%' escape 'e';

DEPTNO DNAME LOC

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

50 BEIJING JIANG%XI

oracle正则表达式,如何表达出一个号码全部由相同的数字组成,号码的位数不确定

用 regexp_like这个函数来解决,正则表达式为:[[:punct:]]+这个正则可以找出任何标点符号。

查询value中包含任何标点符号的记录如下:

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

POSIX 正则表达式由标准的元字符(metacharacters)所构成: '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。 '?' 匹配前面的子表达式零次或一次。 '*' 匹配前面的子表达式零次或多次。

'|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的 '( )' 标记一个子表达式的开始和结束位置。 '{m,n}' 一个精确地出现次数范围,m=出现次数=n,'{m}'表示出现m次,'{m,}'表示至少出现m次。

\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。 [[:alpha:]] 任何字母。

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

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

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

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

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

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

[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。 \转义符 *, +, ?, {n}, {n,}, {n,m} 限定符^, $, anymetacharacter 位置和顺序。

oracle10g中,如何查询正则表达式匹配指定字符串的匹配个数?

REGEXP_COUNT 的语法如下所示:

REGEXP_COUNT ( source_char, pattern [, position [, match_param]])

REGEXP_COUNT 返回pattern 在source_char 串中出现的次数。如果未找到匹配,则函数返回0。position 变量告诉Oracle 在源串的什么位置开始搜索。在开始位置之后每出现一次模式,都会使计数结果增加1。

match_param 变量支持下面几个值:

‘i’ 用于不区分大小写的匹配

‘c’ 用于区分大小写的匹配

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

‘m’ 将源串视为多行。即Oracle 将^和$分别看作源串中任意位置任何行的开始和结束,而不是仅仅看作整个源串的开始或结束。如果省略该参数,则Oracle将源串看作一行。

‘x’ 忽略空格字符。默认情况下,空格字符与自身相匹配。

如果为match_param 指定了多个相互矛盾的值,那么Oracle 使用最后一个值。

可以用REGEXP_COUNT 来修改本章前面的LENGTH 示例。可以将下面的语法

select (LENGTH('GEORGE') - LENGTH(REPLACE('GEORGE', 'GE', NULL)) ) / LENGTH('GE') AS Counter

from DUAL;

COUNTER

-------

2

用如下语法来代替,得到的结果是相同的:

select REGEXP_COUNT('GEORGE','GE',1,'i')

from DUAL;

用REGEXP_COUNT 取代LENGTH 还有一个好处,即可以进行不区分大小写的搜索,因此,前面的查询也可以写成下面这样:

select REGEXP_COUNT('GEORGE','ge',1,'i')

from DUAL;

oracle中截取一个字符串中的数字怎么做?

如果Oracle版本不是太低的话,使用 正则表达式函数 REGEXP_SUBSTR 处理。\x0d\x0a\x0d\x0a5个参数\x0d\x0a第一个是输入的字符串\x0d\x0a第二个是正则表达式\x0d\x0a第三个是标识从第几个字符开始正则表达式匹配。(默认为1)\x0d\x0a第四个是标识第几个匹配组。(默认为1)\x0d\x0a第五个是是取值范围:\x0d\x0ai:大小写不敏感;\x0d\x0ac:大小写敏感;\x0d\x0an:点号 . 不匹配换行符号;\x0d\x0am:多行模式;\x0d\x0ax:扩展模式,忽略正则表达式中的空白字符。\x0d\x0a\x0d\x0aSQL SELECT\x0d\x0a 2 REGEXP_SUBSTR(a,'[0-9]+')\x0d\x0a 3 FROM\x0d\x0a 4 test_reg_substr\x0d\x0a 5 WHERE\x0d\x0a 6 REGEXP_LIKE(a, '[0-9]+');


标题名称:oracle中如何匹配数字 oracle字符串匹配函数
本文地址:http://hbruida.cn/article/hiiiod.html