正则表达式
我有两种方法来检查 11g 中的字符串中的特殊字符
1) 使用 SELECT
V_CNT_QRY := ' SELECT LENGTH(TRIM(TRANSLATE(:1,
''
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 '',
'' '')))
from dual ';
EXECUTE IMMEDIATE V_CNT_QRY INTO V_CNT USING V_COLUMN_DATA;
2) 使用过程
CREATE OR REPLACE PROCEDURE Validate_Inputstring(input_String IN VARCHAR2) AS
BEGIN
IF REGEXP_LIKE(input_String, '^[A-Z0-9a-z]*$') THEN
DBMS_OUTPUT.PUT_LINE('U have entered alphanumeric chars--->' ||
input_String);
ELSE
DBMS_OUTPUT.PUT_LINE('U NOT have entered alphanumeric chars---->' ||
input_String);
END IF;
END;
请建议更好的方法
I have two ways to check a string for a special characters in 11g
1 ) Using SELECT
V_CNT_QRY := ' SELECT LENGTH(TRIM(TRANSLATE(:1,
''
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 '',
'' '')))
from dual ';
EXECUTE IMMEDIATE V_CNT_QRY INTO V_CNT USING V_COLUMN_DATA;
2) Using a procedure
CREATE OR REPLACE PROCEDURE Validate_Inputstring(input_String IN VARCHAR2) AS
BEGIN
IF REGEXP_LIKE(input_String, '^[A-Z0-9a-z]*
Please suggest a better way
) THEN
DBMS_OUTPUT.PUT_LINE('U have entered alphanumeric chars--->' ||
input_String);
ELSE
DBMS_OUTPUT.PUT_LINE('U NOT have entered alphanumeric chars---->' ||
input_String);
END IF;
END;
Please suggest a better way
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
假设你想检查字符串是否只包含 ASCII 字符,你可以使用:
HTH
Supposing you want to check if the string contains only ASCII characters, you can use this:
HTH
我将按以下方式使用 regexp_replace 函数:
绑定变量 txt 包含要验证的字符串。
I would use the regexp_replace function in the following way:
The bind variable txt contains the string to validate.
如果字符串仅包含字母数字或空格,则 select 将返回 0,否则 > > 0.
因此,您可以添加一个 where 子句来仅获取“坏”字符串:
当然,您可以根据需要根据您对“特殊字符”的定义进行修改。
编辑:
如果您不关心标记标点符号,请尝试:
再次根据您的定义进行修改
The select will return 0 if string contains only alphanumeric or spaces, else > 0.
So, you can add a where clause to grab just the "bad" strings:
Of course you can modify this as needed depending on your definition of "special characters".
EDIT:
if you don't care about flagging punctuation, try:
again, modify as needed to your definition