如何限制特定列接受特殊字符。? 这可以用REGEXP_LIKE完成吗?除了下面的字母数字之外,还允许从文本字段中添加特殊字符,并且不能在定义中添加约束。必须在不匹配时处理此case语句,然后引发错误,否则填充相同的值。
!
#
$
%
&
space
(
)
+
,
-
.
/
:
;
<
=
>
?
@
[
\
]
_
DECLARE
A VARCHAR2(100);
B VARCHAR2(100);
BEGIN
A :='_ _\@?=><?:;:>./.-+(%$#!;:aA10b$a9#%-.(@B=Aa1+z0,!#$% ),(+,-./;_ <\_:<>=?@\_ ';
SELECT CASE WHEN regexp_like(A,'^[A-Za-z0-9!#$%()+,-./;:<>=?@\_&[:space:]]+$')
THEN 'TRUE' ELSE 'FALSE' END CASE INTO B
FROM DUAL;
DBMS_OUTPUT.PUT_LINE(B);
END;
尝试下面并获得所需的输出。感谢。
DECLARE
A VARCHAR2(100);
B VARCHAR2(100);
BEGIN
A :='_ _\@?=><?:;:>./.-+(%$#!][;:aA10b$a9#%-.(@B=Aa1+z0,!#$% ),(+,-./;_ <\_:<>=?@\_ [ ';
SELECT CASE WHEN regexp_like(A,'^[][[:alnum:][:space:]!#$%()+,-./;:<>=?@\\_&]+$')
THEN 'TRUE' ELSE 'FALSE' END CASE INTO B
FROM DUAL;
DBMS_OUTPUT.PUT_LINE(B);
END;