- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个地址表,其中包含预期的列(公寓、房屋、街道、邮政编码、国家/地区等)。
我正在使用 PHP 从表单输入 ($street) 执行 MySQL 搜索。我已经成功做到了,这样我就可以通过所有道路拼写变体(例如:“street”、“st”、“st.”)进行搜索,如下所示。我希望输出数组按街道分组。下面按每个单独的拼写进行分组。有没有办法让我的返回组可以包含拼写的所有变体?
我的代码
<?php
$results = $db->prepare(
"SELECT * FROM entries
WHERE
street = :street
OR street = REPLACE(:street, 'st', 'street')
OR street = REPLACE(:street, 'st.', 'street')
OR street = REPLACE(:street, 'st.', 'st')
OR street = REPLACE(:street, 'street', 'st')
OR street = REPLACE(:street, 'street', 'st.')
GROUP BY street, house
")
$results->bindParam(':street', $street);
$results->execute();
$output = $results->fetchAll(PDO::FETCH_ASSOC);
return $output;
?>
当前示例输出
[1] Church Street
[1] 12 Church Street
[2] 25 Church Street
[2] Church St.
[1] 19 Church St.
所需的示例输出
[1] Church Street
[1] 12 Church Street
[2] 25 Church Street
[3] 19 Church St.
最佳答案
我认为您的数据中存在与您试图在 where
子句中处理的相同问题。纠正地址可能是一个挑战。这是这个小例子的尝试:
SELECT *
FROM entries
WHERE street = :street
OR street = REPLACE(:street, 'st', 'street')
OR street = REPLACE(:street, 'st.', 'street')
OR street = REPLACE(:street, 'st.', 'st')
OR street = REPLACE(:street, 'street', 'st')
OR street = REPLACE(:street, 'street', 'st.')
GROUP BY (case when street like '%st' then concat(street, 'reet')
when street like '% st.' then replace(street, ' st.', ' street')
else street
end), house;
编辑:
您应该在 select` 子句中重复 group by 表达式:
SELECT (case when street like '%st' then concat(street, 'reet')
when street like '% st.' then replace(street, ' st.', ' street')
else street
end) as street, house
FROM entries
WHERE street = :street
OR street = REPLACE(:street, 'st', 'street')
OR street = REPLACE(:street, 'st.', 'street')
OR street = REPLACE(:street, 'st.', 'st')
OR street = REPLACE(:street, 'street', 'st')
OR street = REPLACE(:street, 'street', 'st.')
GROUP BY (case when street like '%st' then concat(street, 'reet')
when street like '% st.' then replace(street, ' st.', ' street')
else street
end), house;
关于php - 按替代拼写分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24815036/
我想通过用语言环境拼写数字来本地化数字,最后使用了 ICU4J。我在许多地区都取得了成功,但似乎没有在格鲁吉亚、土耳其或阿拉伯语等地区完成。 ULocale locale = new ULocale(
我正在研究具有端点的 swagger API 规范: /authorizations 我也想为这个端点定义一个替代拼写(授权)。这可能吗?或者我是否需要为每个拼写定义一个单独的路由? /authori
我正在研究具有端点的 swagger API 规范: /authorizations 我也想为这个端点定义一个替代拼写(授权)。这可能吗?或者我是否需要为每个拼写定义一个单独的路由? /authori
我使用 Yahoo BOSS 的时间很短。这是一个简单的搜索 API,但拼写建议支持确实不那么强大。周围的人是否有任何关于在 BOSS 上获得更好的拼写建议的想法。 最佳答案 不幸的是,甚至在几年后,
问题如下:我正在编写一个强力解密器来破解一些 super secret 代码(这是一场竞赛,而不是犯罪),结果证明这是不可能的:树中的节点太多需要被搜查。为了克服这个问题,我认为检查中间“解决方案”以
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
我是一名优秀的程序员,十分优秀!