gpt4 book ai didi

php - 由于标点符号,MySQL 查询不匹配

转载 作者:搜寻专家 更新时间:2023-10-30 20:17:29 38 4
gpt4 key购买 nike

我有一个查询,我试图将一个表的查询结果与另一个表的查询结果相匹配。我遇到的问题是,第一个表的结果有时可能包含标点符号,导致它与其他表的结果不匹配,即使理想情况下也是如此。

例如,表 1 的返回值可能是“Acme, Inc.”,而在第二个表中它显示为“acme inc”。有没有办法在某种程度上强制这些匹配?

感谢您的帮助!

最佳答案

你可以使用 regex或者使用通配符匹配。

所以你可以使用:

select * from tablename where companyname LIKE '%acme%'

这将匹配其中包含“acme”的任何内容,% 表示之前/之后的任何内容。

只是一个额外的想法,可能比使用正则表达式更简单,将任何 , 替换为 %,然后将其用作搜索字符串将是一件容易的事.然后它会通配那个字符。

$searchstring = str_replace(',', '%', $originalstring);

$qry = "select * from tablename where companyname LIKE '%$searchstring%"'

更新

如果您想使用正则表达式,只需将您的搜索字符串拆分为字符部分,然后从中构建一个模式。 (这将拆分标点符号并删除任何空格)

preg_match("/(.*)\p{P}(.*)/", str_replace(' ', '', $searchstring), $output_array);

这将为您提供一个包含 3 个部分的数组,整个字符串和拆分的“位”。然后遍历它们并构造一个 mysql 友好的字符串。 (我们想跳过第一个,hense $key 从 1 开始)

$pattern = '';
for($key = 1; $key < count($output_array); $key++) {
$pattern .= $output_array[$key] . '.*';
}

$qry = "select * from database where companyname REGEXP '$pattern'";

这是一个fiddle

关于php - 由于标点符号,MySQL 查询不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30917520/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com