为什么REGEXP_LIKE函数将字母'e'视为大写而不是小写?

Gle*_*ark 4 regex sql oracle plsql stored-procedures

在我的pl/sql脚本中,Oracle在通过[:upper:]字符类语法进行搜索时将字母'e'视为大写.

REGEXP_LIKE('e', '[:upper:]')

REGEXP_LIKE('e', '[:lower:]')
Run Code Online (Sandbox Code Playgroud)

相关的Oracle文档可以在这里找到:

Oracle - 多语言正则表达式语法

Oracle - REGEXP_LIKE

Vin*_*rat 11

当您用括号括起它们时,字符类似乎有效[]:

SQL> SELECT * FROM dual WHERE regexp_like('e', '[[:upper:]]');

DUMMY
-----

SQL> SELECT * FROM dual WHERE regexp_like('E', '[[:upper:]]');

DUMMY
-----
X
Run Code Online (Sandbox Code Playgroud)

当您使用单个括号时,Oracle将它们视为字符列表,即以下工作因为u包含在字符串中:upper::

SQL> SELECT * FROM dual WHERE regexp_like('u', '[:upper:]');

DUMMY
-----
X
Run Code Online (Sandbox Code Playgroud)

  • +1或换句话说:`[:upper:]`完全等同于:`[epru:]` (4认同)