gpt4 book ai didi

MySQL:需要从地址表中选择唯一街道名称列表

转载 作者:行者123 更新时间:2023-11-29 10:28:33 24 4
gpt4 key购买 nike

我有一个表,其中包含一个指定某些地方的街道地址的字段。我正在尝试找出一种方法,当街道名称与给定的搜索词匹配时,从该表中返回街道名称的子集。

到目前为止我有这个:

SELECT `street` FROM `addresses` 
WHERE (`street` LIKE '%searchTerm%')
GROUP BY `street`
ORDER BY LOCATE('searchTerm',`street`)
LIMIT 10;

这确实没问题,当然,除了它有副作用,即返回整个街道地址(包括房屋#),而我想要的只是街道本身的名称。然而,我不知道如何去掉任何前导数字、破折号或 # 符号并仅从查询中收集街​​道名称?

有办法做到这一点吗?或者我在检索数据后只能在代码(PHP)中管理结果?

谢谢!

最佳答案

根据我的理解,您只需要通过查找模式“%searchTerm%”的最近空格来分隔整个街道名称。这在 MySQL 中是可行的,但我建议用代码来完成。如果您确实在数据库级别需要它,我会将其放入 function 中.

这是在 MySQL 中运行的代码。 (经过一些修改后可以在查询中使用它 - 但我不推荐它:))

SET @STREET='tree';
SET @HAYSTACK='Some man lives at some street 15 in some town in some country';
SET @STREET_START=locate(@STREET, @HAYSTACK) ;
-- first space
SET @FULL_STREET_START=@STREET_START - (SELECT locate(' ',
reverse(substring(@HAYSTACK,1, @STREET_START )))) + 1;
-- last space
SET @FULL_STREET_END=LENGTH(@STREET) + locate(' ',
substring(@HAYSTACK,@STREET_START+LENGTH(@STREET))) + 1;
SELECT substring(@HAYSTACK, @FULL_STREET_START, @FULL_STREET_END);
-- result
+------------------------------------------------------------+
| substring(@HAYSTACK, @FULL_STREET_START, @FULL_STREET_END) |
+------------------------------------------------------------+
| street |
+------------------------------------------------------------+

关于MySQL:需要从地址表中选择唯一街道名称列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47859343/

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