有一个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, '.[*].');
答案 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, '.*\*.*')
但我也不认为这个问题与正则表达式有关。