如何限制特殊字符被特定列接受。?这可以用 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;