有没有办法按文本字段对表进行分组,因为这个文本字段并不总是完全相同的?
示例:
select city_hotel, count(city_hotel)
from hotels, temp_grid
where st_intersects(hotels.geom, temp_grid.geom)
and potential=1
and part=4
group by city_hotel
order by (city_hotel) desc我得到的输出是预期的,例如,City name和count:
"Vassiliki ";1
"Vassiliki";1
"Vassilias, Skiathos";1
"Vassilias";5
"Vasilikí";25
"Vasiliki";23
"Vasilias";1但是我想对这个字段进行更多的分组,并且只得到一个"Vasiliki“(或者一个包含所有元素的数组,这不是问题),以及包含它们之间类似内容的所有单元格的计数。
我不知道这是否可能。也许有一些文本分析的功能,或者类似的功能?
发布于 2016-08-25 22:48:26
SELECT COUNT(*), `etc` FROM table GROUP BY textfield LIKE '%sili%';
// The '%' is a SQL wildcard, which matches as many of any character as required.你可以这样做,为“like”选择一个最适合你用户使用的拼写的单词。
可以对此有所帮助的方法是做一个
SELECT COUNT(*), textfield FROM table GROUP BY textfield ORDER BY textfield;并为您的单词选择最“平均”的拼写。否则,您将开始进行一些语言处理,为此,您将需要在SQL之外编写一些代码。
这可能类似于https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance
找到在任意误差范围内相同的单词。
这里有一个MySQL实现,您应该能够根据需要转置https://stackoverflow.com/a/6392380/1287480
(瑞士信贷https://stackoverflow.com/a/3515291/1287480)
。
(个人对该主题的思考)
你真的很想考虑限制来自用户的输入,这可能会在第一时间给你带来这个问题。为用户提供一个可供选择的位置列表要比将潜在的“脏”信息推入数据库要好得多。这最终总会以你试图在以后清理信息而告终。这个问题多年来一直困扰着许多人。
https://stackoverflow.com/questions/39148003
复制相似问题