<small id='TTjin'></small><noframes id='TTjin'>

      <legend id='TTjin'><style id='TTjin'><dir id='TTjin'><q id='TTjin'></q></dir></style></legend>

      • <bdo id='TTjin'></bdo><ul id='TTjin'></ul>

    1. <i id='TTjin'><tr id='TTjin'><dt id='TTjin'><q id='TTjin'><span id='TTjin'><b id='TTjin'><form id='TTjin'><ins id='TTjin'></ins><ul id='TTjin'></ul><sub id='TTjin'></sub></form><legend id='TTjin'></legend><bdo id='TTjin'><pre id='TTjin'><center id='TTjin'></center></pre></bdo></b><th id='TTjin'></th></span></q></dt></tr></i><div id='TTjin'><tfoot id='TTjin'></tfoot><dl id='TTjin'><fieldset id='TTjin'></fieldset></dl></div>
        <tfoot id='TTjin'></tfoot>

        Oracle 11g - 使用 RegEx 检查约束

        Oracle 11g - Check constraint with RegEx(Oracle 11g - 使用 RegEx 检查约束)
      1. <tfoot id='OWRwq'></tfoot>
          <bdo id='OWRwq'></bdo><ul id='OWRwq'></ul>
                  <tbody id='OWRwq'></tbody>
              1. <legend id='OWRwq'><style id='OWRwq'><dir id='OWRwq'><q id='OWRwq'></q></dir></style></legend>
                1. <i id='OWRwq'><tr id='OWRwq'><dt id='OWRwq'><q id='OWRwq'><span id='OWRwq'><b id='OWRwq'><form id='OWRwq'><ins id='OWRwq'></ins><ul id='OWRwq'></ul><sub id='OWRwq'></sub></form><legend id='OWRwq'></legend><bdo id='OWRwq'><pre id='OWRwq'><center id='OWRwq'></center></pre></bdo></b><th id='OWRwq'></th></span></q></dt></tr></i><div id='OWRwq'><tfoot id='OWRwq'></tfoot><dl id='OWRwq'><fieldset id='OWRwq'></fieldset></dl></div>

                  <small id='OWRwq'></small><noframes id='OWRwq'>

                  本文介绍了Oracle 11g - 使用 RegEx 检查约束的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在使用 Oracle 11g,并尝试创建一个表,定义对创建的约束.

                  I'm using Oracle 11g, and trying to create a table define constraints on the creation.

                  我试图添加检查约束来验证一些信息(如电子邮件地址、电话号码等...)

                  I was trying to add check constraint to validate some information (like e-mail address, phone number, etc...)

                  Oracle 11g 中是否有允许我执行此类操作的内容?

                  Is there something in Oracle 11g that would allow me to do something like this?

                  constraint CK_CONSTRAINT_NAME check (EMAIL like 'REGEX')
                  

                  我想使用的正则表达式(从 regexLib 中抓取)是:

                  The regEx I wanted to use (grabbed from regexLib) is:

                  ^[a-zA-Z][a-zA-Z0-9_.-]+@([a-zA-Z0-9-]{2,}.)+([a-zA-Z]{2,4}|[a-zA-Z]{2}.[a-zA-Z]{2})$
                  

                  我认为 Oracle 11g(如果我错了请纠正我)不支持 RegEx 的这种格式...

                  I think Oracle 11g (correct me if I'm wrong) doesn't support this format for RegEx...

                  我见过使用 REGEX_LIKE 的方法,但它似乎只适用于 WHERE 子句.

                  I've seen methods using REGEX_LIKE, but it seems to only work in WHERE clauses.

                  我想将其保留为检查约束,而不是触发器或外部函数/脚本.

                  I'd like to keep it as a check constraint and not a trigger or an external function/script.

                  另外,我在这里读过其他主题,有人说 RegEx' 不是验证电子邮件地址格式和此类信息的好方法.评论中没有给出原因,如果有原因,我想知道为什么!

                  Also, I've read in other threads here, someone saying RegEx' are not a good way of verifying e-mail address format and such information. No reason was given in the comment, and I'd like to know why, if a reason there is!

                  推荐答案

                  检查约束遵循与 WHERE 子句的条件相同的语法规则:

                  A check constraint follows the same syntax rules as conditions for a WHERE clause:

                  alter table foo
                    add constraint check_email 
                    check (REGEXP_LIKE(email,'your_regex_goes_here','I')); 
                  

                  手册中的更多详细信息:

                  More details in the manual:

                  • 对于 Oracle 11 - http://docs.oracle.com/cd/E11882_01/server.112/e41084/conditions007.htm#SQLRF52141
                  • 对于 Oracle 12 - https://docs.oracle.com/database/121/SQLRF/conditions007.htm#SQLRF52141


                  但是,您可以在检查约束中实际使用的内容有一些限制:

                  There are however some restrictions on what you can actually use in a check constraint:

                  • Oracle 11 - http://docs.oracle.com/cd/E11882_01/server.112/e41084/clauses002.htm#SQLRF52205
                  • Oracle 12 - https://docs.oracle.com/database/121/SQLRF/clauses002.htm#SQLRF52205

                  这篇关于Oracle 11g - 使用 RegEx 检查约束的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  ibtmp1是非压缩的innodb临时表的独立表空间,通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在文件系统磁盘足够的情况下,这个文件大小是可以无限增长的。 为了避免ibtmp1文件无止境的暴涨导致
                  SQL query to group by day(按天分组的 SQL 查询)
                  What does SQL clause quot;GROUP BY 1quot; mean?(SQL 子句“GROUP BY 1是什么意思?意思是?)
                  MySQL groupwise MAX() returns unexpected results(MySQL groupwise MAX() 返回意外结果)
                  MySQL SELECT most frequent by group(MySQL SELECT 按组最频繁)
                  Include missing months in Group By query(在 Group By 查询中包含缺失的月份)
                2. <i id='hrjBZ'><tr id='hrjBZ'><dt id='hrjBZ'><q id='hrjBZ'><span id='hrjBZ'><b id='hrjBZ'><form id='hrjBZ'><ins id='hrjBZ'></ins><ul id='hrjBZ'></ul><sub id='hrjBZ'></sub></form><legend id='hrjBZ'></legend><bdo id='hrjBZ'><pre id='hrjBZ'><center id='hrjBZ'></center></pre></bdo></b><th id='hrjBZ'></th></span></q></dt></tr></i><div id='hrjBZ'><tfoot id='hrjBZ'></tfoot><dl id='hrjBZ'><fieldset id='hrjBZ'></fieldset></dl></div>

                    <tfoot id='hrjBZ'></tfoot>
                      <tbody id='hrjBZ'></tbody>

                          • <bdo id='hrjBZ'></bdo><ul id='hrjBZ'></ul>
                            <legend id='hrjBZ'><style id='hrjBZ'><dir id='hrjBZ'><q id='hrjBZ'></q></dir></style></legend>

                            <small id='hrjBZ'></small><noframes id='hrjBZ'>