我想验证TAX,NAME,TELEPHONE NO。那些应该是alpha-numeric.So使用这个方法,但在这里我想知道我可以通过简单的方法做简单的方法,而不使用这么多的“AND”。
IF REGEXP_LIKE(i.TAX, '^[A-Za-z0-9]+$') AND REGEXP_LIKE(i.NAME, '^[A-Za-z0-9]+$') AND REGEXP_LIKE(VarTelephone , '^[A-Za-z0-9]+$') THEN
INSERT INTO BIZZXE_V2_SCH.SUPPLIER_CONTACTS
(CONTACT_ID, SUPPLIER_ID, ADDRESS, ZIP_CODE, COUNTRY_ID, CITY_ID, TELEPHONE, FAX, EMAIL, XMLCOL)
VALUES(VarContactId ,VarId, k.ADDRESS, k.ZIP_CODE, k.COUNTRY_ID, k.CITY_ID, k.TELEPHONE, k.FAX, k.EMAIL, VarContactDetail);
ELSE
-- Start Return RVAL Messages --
RVAL.EX_CODE:=1;
RVAL.MESSAGE:='Supplier Tax and Supplier Name should be apha-numeric that is numbers letters and symbols..!';
-- End Return RVAL Messages --
END IF;
答案 0 :(得分:3)
由于它们都需要匹配相同的正则表达式模式,即字母数字,您可以验证这三个值的串联:
IF REGEXP_LIKE(i.TAX || i.NAME || VarTelephone , '^[A-Za-z0-9]+$')
然而,这与你的问题条件不完全相同,因为如果只有一个或两个值是空的,那么在这种情况下它将被评估为真,而在另一个中则不被评估。
可能的解决方法,如果您需要不同的正则表达式,例如,仅用于验证数字()-
和+
的电话,就可以这样:
IF REGEXP_LIKE(i.TAX || ' ' || i.NAME || ' ' || VarTelephone ,
'^[A-Za-z0-9]+ [A-Za-z0-9]+ [\d()\-+]+$')
对于这种情况,您必须确保所选的分隔符,在我的情况下,空格将永远不会出现在任何输入文本中。