SQL道場 文字列関数 FIELD関数
数値を指定した進数の文字列に変換するFIELD関数について記載しています。
対応データベース:MySQL
FIELD関数の文法
SELECT FIELD(探す文字列,文字列1 |,文字列2・・・|) FROM テーブル
引数 | 探す文字列 | 文字列型 |
文字列1 | 文字列型 | |
文字列2 | 文字列型 | |
返値 | 整数型 何番目に見つかったか。 |
FIELD関数は指定された複数の文字列の中から文字列を探し何番目に見つかったを返します。見つからない場合は0(ゼロ)を返します。FIELD関数の逆の機能を持つ関数としてELT関数があります。
実行例
MySQLの実行例
探す文字列「peach」が何番目にあるかを返します。
/* 数値を指定した進数の文字列に変換するサンプル */
SELECT FIELD('Peach','Apple','Peach','Grape');
特殊な並び順にする場合にFIELD関数を利用する
以下の資格テーブルがあった場合、資格カラムの危険物,情報処理,無資格順にソート(並べ替え)したい場合に、FIELD関数を利用します。
資格テーブル
ID | 氏名 | 年齢 | 性別 | 資格 |
---|---|---|---|---|
1 | すなりん 太郎 | 35 | 男 | 危険物 |
2 | 博多 ぴーち | 20 | 女 | 情報処理 |
3 | 田中 工事 | 3 | 男 | 危険物 |
4 | 佐々木 花子 | 40 | 女 | 情報処理 |
5 | 佐藤 じゅん | 23 | 男 | 無資格 |
6 | 佐々木 ゆん | 2 | 男 | 無資格 |
/* 特殊な並び順にする場合にFIELD関数を利用する */
SELECT
id
,EMP_NAME as '氏名'
,EMP_AGE as '年齢'
,EMP_SEX as '性別'
,EMP_LICENSE '資格'
FROM testdb.MST_EMPLOYEE
ORDER BY FIELD(資格,'危険物','情報処理','無資格')
;