首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在包含以逗号分隔的字符串值的列上使用Order子句?

如何在包含以逗号分隔的字符串值的列上使用Order子句?
EN

Stack Overflow用户
提问于 2013-08-13 06:40:10
回答 6查看 4.1K关注 0票数 0

我有一个表,其中有一个名为Skills的列,其中包含不同员工的逗号分隔值,例如

代码语言:javascript
复制
EmpID  Skills
 1     C,C++,Oracle
 2     Java,JavaScript,PHP
 3     C,C++,Oracle
 4     JavaScript,C++,ASP
 5     C,C++,JavaScript

因此,我想写一个查询,它将首先对所有熟悉JavaScript的员工进行排序,如何才能得到这个结果?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-08-13 06:45:45

尝尝这个

代码语言:javascript
复制
SELECT *
FROM 
(
    SELECT *
        ,CASE WHEN Skills LIKE '%JavaScript%' THEN 0 ELSE 1 END AS Rnk 
    FROM MyTable
) T
ORDER BY rnk,EmpID

演示

代码语言:javascript
复制
SELECT * FROM #MyTable
ORDER BY CASE WHEN Skills LIKE '%JavaScript%' THEN 0 ELSE 1 END,EmpID
票数 1
EN

Stack Overflow用户

发布于 2013-08-13 06:44:59

您应该使用而不是使用一个属性来存储多个值。这违反了关系DB原则。

相反,您应该创建额外的表来存储技能,并在其中引用员工。然后,您的查询将类似于:

代码语言:javascript
复制
SELECT 
  * 
FROM 
  employees 
  LEFT JOIN employees_skills 
    ON employee.id=employees_skills.employee_id 
WHERE 
  employees_skills='JavaScript'
票数 2
EN

Stack Overflow用户

发布于 2013-08-13 06:45:10

代码语言:javascript
复制
select EmpID, Skills
from Table1
order by case when Skills like '%JavaScript%' then 0 else 1 end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18202277

复制
相关文章

相似问题

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