我需要将字符串与模式匹配以验证给定的字符串。
给定的字符串可能类似于1234/5678。
我应该以这样的方式验证字符串,即前四个字符和后四个字符必须是数字,并且必须用斜杠分隔。
如何在SQL或PL / SQL中执行此操作?
我尝试了不同的功能,例如REGEXP_LIKE,REGEXP_REPLACE,REGEXP_SUBSTR。
有人可以帮我吗?
答案 0 :(得分:0)
如果使用的是oracle,则可以使用regexp_like https://www.techonthenet.com/oracle/regexp_like.php 如果您使用的是mysql regexp或rlike https://dev.mysql.com/doc/refman/5.5/en/regexp.html 对于sqlserver IsMatch() https://github.com/zzzprojects/Eval-SQL.NET/wiki/SQL-Server-Regex-%7C-Use-regular-expression-to-search,-replace-and-split-text-in-SQL#sql-regex---ismatch
ORACLE
SELECT * FROM T WHERE COL REGEXP_LIKE REGULAREXP
MYSQL
SELECT * FROM T WHERE COL RLIKE REGULAREXP
SELECT * FROM T WHERE COL REGEXP REGULAREXP
答案 1 :(得分:0)
样本表:
{"FirstValue":0.2,"SecondValue":30.8,"FourthValue":30.8}
答案 2 :(得分:0)
如果需要在PL / SQL中完成此操作(例如,您要验证用户输入,而不是表中的数据),则可以创建一个函数来执行验证,例如:
DECLARE
v_str VARCHAR2(10);
FUNCTION validate_string (in_str VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN regexp_like(in_str, '\d{4}/\d{4}');
END validate_string;
PROCEDURE validation_output (in_str VARCHAR2)
IS
BEGIN
IF validate_string (in_str => in_str) THEN
dbms_output.put_line(in_str||': validated');
ELSE
dbms_output.put_line(in_str||': not validated');
END IF;
END validation_output;
BEGIN
v_str := '1234/5678';
validation_output (v_str);
v_str := '12/5678';
validation_output (v_str);
v_str := NULL;
validation_output (v_str);
END;
/
1234/5678: validated
12/5678: not validated
: not validated