0

有一个带有一堆条目的 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, '.[*].');
4

2 回答 2

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    

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

于 2013-09-20T19:02:09.257 回答
0

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

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

但我也不认为问题出在正则表达式上。

于 2013-09-20T20:18:21.303 回答