김택정*_*김택정 0 sql oracle constraints regexp-like
我必须做 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)
但是,它不起作用。不知何故,放置 $ 会导致问题。但是我必须放 $ 以确保行尾字符也是小写。
如果您的列声明正确,您的代码应该可以工作。但是你可以大大简化它:
constraint usernameSMALLCASE check ( REGEXP_Like(username, '^[a-z]{3,10}$') )
Run Code Online (Sandbox Code Playgroud)
显然,除了正则表达式之外,还有其他方法可以处理这个问题。但是,您已经开始了正则表达式路线,使用一个就足够简单了。
如果您坚持使用固定长度的列,则可以将其表示为:
constraint usernameSMALLCASE check ( REGEXP_Like(username, '^[a-z]{3,10} *$') )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |