在正则表达式上选择一行没有重复条目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在正则表达式上选择一行没有重复条目相关的知识,希望对你有一定的参考价值。

我的信息表包含以下列:

id,评论,状态

我想从info中选择所有评论,并使用以下查询:

SELECT name FROM info WHERE status = 1 ORDER BY id

评论栏具有以下内容:

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

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

答案

你真的需要一个基于正则表达式提取年份的函数,比如phppreg_match()。 Michael Packer的回答是使用Oracle做到的。但是,MySQL lacks a built-in function for this;它的正则表达式函数只允许说出某些内容是否匹配,而不是提取匹配项。

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

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

以上是关于在正则表达式上选择一行没有重复条目的主要内容,如果未能解决你的问题,请参考以下文章

在焦点上选择/突出显示nicedit编辑器的内容[重复]

在单击反应表上选择行

在 id 上选择 distinct 以返回一行,但能够访问其他列值(rails 关联)

如何在 SQL 中的一个字段上选择不重复的记录?

SQL - 仅在一列上选择不同的[重复]

addSubview 到特定的 uitableviewcell 上选择