Php 基于字符串的MySQL查询

Php 基于字符串的MySQL查询,php,mysql,Php,Mysql,在过去的10个小时里,这个问题一直困扰着我。我们开始: 我想和我提取的一些数据做一个比较。我正在提取名称,我想删除相似的名称,使它们不会在查询中返回 例如: 我的名字如下: 海滨高地 海边HGTS 塔拉德加 托恩卡尔中心 托恩卡尔中心 扬克斯 斑马鱼 我希望它像这样返回: 海滨高地 塔拉德加 托恩卡尔中心 扬克斯 斑马鱼 基本上,我认为应该使用子字符串(name,0,8)来获取前8个字符,然后针对下一个条目运行这8个字符,如果它们匹配,则忽略它 也许我正在想办法深入这一点。任何可能有效的

在过去的10个小时里,这个问题一直困扰着我。我们开始:

我想和我提取的一些数据做一个比较。我正在提取名称,我想删除相似的名称,使它们不会在查询中返回

例如:

我的名字如下:

  • 海滨高地
  • 海边HGTS
  • 塔拉德加
  • 托恩卡尔中心
  • 托恩卡尔中心
  • 扬克斯
  • 斑马鱼
我希望它像这样返回:

  • 海滨高地
  • 塔拉德加
  • 托恩卡尔中心
  • 扬克斯
  • 斑马鱼
基本上,我认为应该使用子字符串(name,0,8)来获取前8个字符,然后针对下一个条目运行这8个字符,如果它们匹配,则忽略它


也许我正在想办法深入这一点。任何可能有效的见解或概念都将受到赞赏

首先,您将查询所有数据

然后,对于返回的每个记录,都要运行LCS算法(最长公共子序列)

如果两个不同记录之间的最长公共子序列是由您选择的,那么您可以将它们分类为相似的

编辑:正好有一个很好的PHP函数:
您可能想看看。它可能并不完美,但它可以让你进入球场。

如果字符串之间的差异仅限于一小部分缩写(HGTS高度、CTR中心等),你可能只想保留一个表格,并用完整版本替换缩写,然后检查其唯一性。

尝试以下操作:

如果字符串之间的差异与您在示例中解释的相似

 select names from tablename group by substring_index(names," ",1)

如果你让PHP或MySQL为你做这件事有关系吗?输出和输入的关系是什么??对于
子字符串(名称,0,8)
,您将拥有什么?只需在空格之前进行比较?您只想在一个条目的前8个字符与另一个条目的前8个字符匹配时忽略该条目?如果前7个字符匹配怎么办?我认为这个问题不值得任何表决,因为它太模糊,没有聚合函数就无法进行分组。然而,MySQL在只选择一个值时允许这样做。