首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抓取SQL字段的子字符串,其中字符串与字段的一部分匹配

抓取SQL字段的子字符串,其中字符串与字段的一部分匹配
EN

Stack Overflow用户
提问于 2010-10-11 19:21:25
回答 1查看 379关注 0票数 1

大家好,感谢你们阅读……

我一直在努力寻找解决SQL和PHP问题的方法。下面是我正在尝试使用的表格的一个片段。

该表名为web_navbar_links,字段名为slug

代码语言:javascript
复制
+------------------+-------+
|       slug       | child |
+------------------+-------+
|business-multiseat|   1   |
+------------------+-------+
|consumer-multiseat|   1   |
+------------------+-------+

我有一个字符串"multiseat“,我需要一个SQL查询,它将搜索所有行,并拉回第一个子字符串"business”和/或"consumer“,这些子字符串与字符串"multiseat”匹配,也是child='1‘。

我试过concat_ws和LIKE,但我觉得它们不是正确的命令,除非是ofc我不懂它们的用法:D

如果有人能帮我,我会很高兴的。

丹。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-11 19:31:40

您可能想要使用:

代码语言:javascript
复制
SELECT   DISTINCT SUBSTRING(slug, 1, INSTR(slug, '-') - 1) result
FROM     web_navbar_links
WHERE    SUBSTRING(slug FROM INSTR(slug, '-') + 1) = 'multiseat' AND child = 1;

但是,请注意,如果您计划在web_navbar_links表中有很多行,这可能会很慢。这样的查询将无法使用slug上的索引(如果存在)。

测试用例:

代码语言:javascript
复制
CREATE TABLE web_navbar_links (id int, slug varchar(70), child int);

INSERT INTO web_navbar_links VALUES (1, 'business-multiseat', 1);
INSERT INTO web_navbar_links VALUES (2, 'business-singleseat', 1);
INSERT INTO web_navbar_links VALUES (3, 'consumer-noseat', 1);
INSERT INTO web_navbar_links VALUES (4, 'consumer-multiseat', 1);
INSERT INTO web_navbar_links VALUES (5, 'something', 1);
INSERT INTO web_navbar_links VALUES (6, 'business-multiseat', 2);
INSERT INTO web_navbar_links VALUES (7, 'something-else', 2);

结果:

代码语言:javascript
复制
SELECT   id, SUBSTRING(slug, 1, INSTR(slug, '-') - 1) result
FROM     web_navbar_links
WHERE    SUBSTRING(slug FROM INSTR(slug, '-') + 1) = 'multiseat' AND child = 1;

+------+----------+
| id   | result   |
+------+----------+
|    1 | business |
|    4 | consumer |
+------+----------+
2 rows in set (0.00 sec)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3905713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档