0

Skills次のようなさまざまな従業員のカンマ区切りの値を含む名前の列を持つテーブルがあります

EmpID  Skills
 1     C,C++,Oracle
 2     Java,JavaScript,PHP
 3     C,C++,Oracle
 4     JavaScript,C++,ASP
 5     C,C++,JavaScript

だから私は知っているすべての従業員を最初に注文するクエリを書きたいのですがJavaScript、どうすればこの結果を得ることができますか?

4

6 に答える 6

0

これは DB2/400 で機能します。

with s (id, skill, rest) as                       
    (select id, '', sk from skills                    
     union all                                        
     select id, substr(rest, 1, locate(',',rest)-1),  
                substr(rest,locate(',',rest)+1)      
     from       s                                    
     where      locate(',',rest) > 0)                
select id, skill from s                           
where  skill = 'JavaScript'                       
order by id    
于 2013-08-13T08:35:54.443 に答える
0

MySQL の場合

select Skills from myTable 
order by case Skills 
when "Javascript" then 0 
when "Java" then 1 when "C++" then 2
end

等々

SQL サーバーの場合

select Skills from myTable 
order by case 
when Skills="Javascript" then 1
when Skill="Java" then 2
else 3 
end

必ず1からSQLサーバーを起動してください(よくわかりません)。残りのすべての結果を表示するelseをendの前に含めます。

SQL Server の詳細については、これまたはこれを参照してください

于 2013-08-13T06:49:25.360 に答える
0

これを試して:

 SELECT *
 FROM YourTable
 ORDER BY PATINDEX('%JavaScript%', Skills) DESC 

しかし、これは悪い方法です。テーブルを本当に正規化する必要があります。

于 2013-08-13T06:46:18.637 に答える