首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据给定的参数值提取字符串

根据给定的参数值提取字符串
EN

Stack Overflow用户
提问于 2014-09-12 17:26:40
回答 1查看 78关注 0票数 0

根据下表中给定的参数值提取字符串:

ID技能

1 Java-16、Oracle-10、pl/sql-9、BI-19、Perl-10

2 Oracle-10、sql-9、Java-20

3 Java-10、C-10、Oracle-50

我的sql是参数化查询,当我输入像:skill1=Java和:skill2 = Ora这样的输入值时,我的输出应该如下:注意:上面的列技能总是具有上面两个参数的值,因为它是基于子查询返回的(通过比较like运算符),现在我只需要提取参数值,如下所示。

该列的值是将数字用',‘分隔的技能连接到另一个技能,如图所示

输出应如下所示:

ID技能

1个Java-16、Oracle-10

2个Oracle-10、Java-20

3 Java-10、Oracle-50

EN

回答 1

Stack Overflow用户

发布于 2014-09-12 19:13:23

一种可能的解决方案是,分解逗号分隔的列表,如下所示(假设您只需要以传递的参数之一开始的技能)

代码语言:javascript
复制
SELECT ID, GROUP_CONCAT(SUBSTRING_INDEX(SUBSTRING_INDEX(Skills, ',', 1 + units.i + tens.i * 10), ',', -1))
FROM sometable,
(SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) units,
(SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) tens
WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(Skills, ',', 1 + units.i + tens.i * 10), ',', -1) LIKE :skill1
OR SUBSTRING_INDEX(SUBSTRING_INDEX(Skills, ',', 1 + units.i + tens.i * 10), ',', -1) LIKE :skill2
GROUP BY ID

这可能不会很快,重新设计您的数据源和存储数据的方式可能会更好,以避免这种情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25805010

复制
相关文章

相似问题

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