如何创建一个 Oracle 正则表达式来检查给定的字符串是否包含数字和字母,并且不包含特殊字符。例如,
如果字符串类似于 'kjds327' 它必须返回 true
如果字符串是 'dkfsdsf' 或 '132564' 或 'asjv@3#34342fd' 它必须 返回 false
我通过一个表达 -
select * from table where regexp_like(field, '^\d+\D+$');
Run Code Online (Sandbox Code Playgroud)
我确定表达式的作用,但请有人解释一下究竟'^\d+\D+$'是什么意思吗?
谢谢.
查询:
select 1 "val" from dual where regexp_like('ITEM HEIGHT','^(?!ICON).*HEIGHT$');
Run Code Online (Sandbox Code Playgroud)
上面的查询没有返回我1。请让我知道如何使用oracle实现负前瞻regexp_like()。
注意:请不要在查询中提出任何建议,我很想知道正确的正则表达式可以接受regexp_like()否定超前。而且[^]似乎只逐个字符地求反,而不是整个字符串。
从 中查询CITY以元音(即 a、e、i、o 或 u)开头的名称列表STATION。
我的答案/尝试过的代码是:
select city from station where REGEXP_LIKE(city,'[^aeiou]+');
Run Code Online (Sandbox Code Playgroud)
但这似乎并不正确。
请帮我解决这个问题。
在 SQL Developer 上运行以下代码时会引发错误:
SELECT REGEXP_LIKE('CTCP AYD 0404370713 M', 'CTCH.*[0-9]/{0,1}.*', 'i') FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
错误信息:
ORA-00904: "REGEXP_LIKE": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 40 Column: 8
Run Code Online (Sandbox Code Playgroud)
REGEXP_LIKE()不知道为什么当Oracle 中的函数可用时会抛出错误。
Oracle 数据库专家有什么看法吗?
我必须做 oracle 约束来检查用户名是否最少 3 个和最多 10 个小写字母。
我用过了
constraint usernameSMALLCASE check (
REGEXP_Like(username,'^[a-z]{10}$') or
REGEXP_Like(username,'^[a-z]{9}$') or
REGEXP_Like(username,'^[a-z]{8}$') or
REGEXP_Like(username,'^[a-z]{7}$') or
REGEXP_Like(username,'^[a-z]{6}$') or
REGEXP_Like(username,'^[a-z]{5}$') or
REGEXP_Like(username,'^[a-z]{4}$') or
REGEXP_Like(username,'^[a-z]{3}$')
)
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用。不知何故,放置 $ 会导致问题。但是我必须放 $ 以确保行尾字符也是小写。