【问题标题】:Select one row without duplicate entries on regex based在基于正则表达式的情况下选择一行没有重复条目
【发布时间】:2018-03-14 18:30:59
【问题描述】:

我的信息表有以下列:

id、评论、状态

我想从信息中选择所有评论,并且正在使用以下查询:

SELECT name FROM info WHERE status = 1 ORDER BY id

评论栏有以下内容:

id 1 : 你好世界 2010
id 2 : 你好世界 2010
id 3 : 你好,我在 2010 年
id 4:你好 2020
...

我想回显所有按数字过滤的条目(正则表达式数字 0-9 4 位),不重复。 输出示例: 编号 1:2010 编号 4:2020 说:在“评论”列下,我们插入了 100 多行不同的值。

【问题讨论】:

  • 是你的 4 位数号码。总是在字符串的末尾?
  • 不能在开头或结尾或一半
  • it can not be at the beginning or at the end or half。所以不是在开头,不是在结尾,不是在中间?那么它会在哪里呢?

标签: php mysql sql phpmyadmin


【解决方案1】:

您确实需要一个函数来根据正则表达式提取年份,例如 PHP 的 preg_match()。 Michael Packer 的回答是使用 Oracle 来完成的。但是,MySQL lacks a built-in function for this;它的正则表达式函数只允许说 if 某些匹配项,而不是 extraction 匹配项。

根据您的数据格式,您的用例可能会有更好的解决方案。例如,如果年份包含列中唯一的数字等。

或者,您可以在 PHP 中进行处理。为了允许将来的查询执行此操作,您可以让 PHP 从文本中提取年份值并将其存储在单独的列中。然后 SELECT 查询可以按该列分组。

【讨论】:

    猜你喜欢
    • 2016-07-13
    • 2018-10-29
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 2018-02-21
    相关资源
    最近更新 更多