如何在Oracle DB的REGEX_LIKE中将*视为文字?

时间:2013-09-20 18:29:09

标签: sql regex oracle literals

有一个Oracle数据库,其中包含一串条目,其中在字符串之前,中间和末尾都有'*'。我正在执行一些数据分析,并希望查看有多少条目存在*字符串中间的某处,前后至少有一个字符。但是根据http://docs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm *是一个元字符,但我不知道如何查看文档,如何将其视为文字。我已经尝试了[*], (*), \*,但所有结果都是ORA-00920: invalid relational operator

SELECT COUNT(*) FROM myTable mT WHERE REGEXP_LIKE (mT.myCol, '.[*].');

2 个答案:

答案 0 :(得分:1)

似乎对我有用:

> drop table tabx
table TABX dropped.
> create table tabx
(
val varchar2(10)
)
table TABX created.
> insert into tabx values ('AB*CD')
1 rows inserted.
> insert into tabx values ('A*B')
1 rows inserted.
> insert into tabx values ('DEF')
1 rows inserted.
> commit
committed.
> SELECT * FROM tabx x WHERE REGEXP_LIKE (x.val, '.[*].')
VAL      
----------
AB*CD      
A*B    

您的错误可能来自其他地方。

答案 1 :(得分:0)

格式化查询的另一种方法如下:

REGEXP_LIKE(mT.myCol, '.*\*.*')

但我也不认为这个问题与正则表达式有关。