【问题标题】:How can I add regular expressions to MySQL datafields?如何将正则表达式添加到 MySQL 数据字段?
【发布时间】:2011-04-13 11:33:30
【问题描述】:

我有下表:

Table Account{
    [...]
    email varchar(100),
    [...]
}

以及对应的正则表达式:

/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i

如何使用 MySQL 模型,将正则表达式链接到数据字段“电子邮件”,以便可以通过 php 以及触发器甚至更好的方式读取正则表达式,以一种约束?

我想直接使用 MySQL 工作台来定义它,所以单独的表对我不起作用。

【问题讨论】:

    标签: mysql regex mysql-workbench


    【解决方案1】:

    在我看来,像这样的输入验证并不是数据库的真正任务。这些验证规则可能会改变。有一天,您甚至可以让它们由用户配置。如果规则隐藏在某处的某个触发器中,这将变得非常困难。

    此外,无论如何,您都需要在应用程序级别处理验证错误 - 显示某种消息。

    PHP 在 mySQL 中访问它们的最佳位置可能是列注释,您可以使用 SHOW COLUMNSFULL 关键字来获取。

    【讨论】:

    • 感谢您的建议。在 cmets 中是否有一个常见的模式如何做这样的事情?我的第一个想法是在评论中存储一个 JSON 对象,以便以后能够扩展它。
    • @Thomas 我不知道常见的模式;像 JSON 对象这样的东西听起来是个好主意。我找不到列 here 的最大大小 - 可能首先测试一个非常大的值以避免出现问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 2012-11-26
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多