【MySQL 文字列関数】
LOCATE関数
LOCATE関数は文字列のなかから探したい文字列の位置を見つけてくれます。
項目
|
内容
|
書式
|
locate(探したい文字列, 検索対象の文字列, [検索開始位置])
|
探したい文字列
|
検索したい文字列
|
検索対象の文字列
|
検索しようとしている文字列
|
検索開始位置
|
これは任意(オプション)です。
検索開始位置をしていできます。
|
検索した結果、一致する文字列が見つからない場合は「0」が返ります。
見つかった場合は、その見つかった位置を返します。
【オプションを指定しない例】
select "locate(23,001234)" as "SQL", locate(23,001234) as 結果 from dual
数字として変換された後、文字列として検索されています。
「001234」→「1234」
この「1234」から「23」が始まる開始位置を探しています。
|
select "locate('b','abc')" as "SQL", locate('b','abc') as 結果 from dual
半角の例です。「abc」の中に「b」が始まる位置を探しています。
|
select "locate('い','あいう')" as "SQL", locate('い','あいう') as 結果 from dual
全角の例です。「あいう」の中に「い」が始まる位置を探しています。
|
select "locate('いi','あaいiうuえeおo')" as "SQL",
locate('いi','あaいiうuえeおo') as 結果 from dual
全角と半角が混在している例です。
「あaいiうuえeおo」の中に「いi」が始まる位置を探しています。
|
select "locate('','あ')" as "SQL", locate('','あ') as 結果 from dual
「あ」の中に「」(空文字)を探しています。
空文字で探した場合は「1」が返っています。
※オプション(第3引数)を指定しないケース
|
select "locate('い','あ')" as "SQL", locate('い','あ') as 結果 from dual
「あ」の中に「い」を探しています。
何も見つからないため「0」が返っています。
|
select "locate(NULL,'')" as "SQL", locate(NULL,'') as 結果 from dual
「」(空文字)の中からNULLを探しています。
結果はNULLが返ります。
|
【その他の結果】
NULLを設定した場合は「NULL」が返るようです。
空文字で検索した場合は探した開始位置を「1」を返すようです。(1バイト文字を検索したケース)
ただし、オプションを利用した場合は検索開始の数字を返すようです。(1バイト文字を検索したケース)
2バイト文字が入った文字列を空文字で検索すると等差数列の結果が返っているようですので、空文字で検索するような仕様にはしないほうがいいと思います。
最後にオプションを使用した例を見てください。
※検索開始位置を指定できるオプションです。
検索開始位置を指定しても、文字列の最初から何番目か?の位置を返します。
次の2個の実行結果が同じであることがその証明になります。
[実行その1]
select "locate('b','abc', 1)" as "SQL", locate('b','abc', 1) as 結果 from dual
[実行その2]
select "locate('b','abc', 2)" as "SQL", locate('b','abc', 2) as 結果 from dual
検索開始位置が違いますが、「実行その1」と「実行その2」の結果は同じです。
|
検索開始位置から見て探したい文字列が見つからない場合は「0」が返ります。
(例)
select "locate('b','abc', 3)" as "SQL", locate('b','abc', 3) as 結果 from dual
select "locate('い', 'あいう', 1)" as "SQL", locate('い', 'あいう', 1) as 結果 from dual
|
全角と半角が混在していても1文字は1文字とみなして検索しています。
(例)
select "locate('いi', 'あaいiうu', 3)" as "SQL", locate('いi', 'あaいiうu', 3) as 結果 from dual
|
|
|
著作権情報 | 本ホームページに掲載されている情報等については、いかなる保証もいたしません。 本ホームページを通じて入手したいかなる情報も複製、販売、出版または使用させたり、 または公開したりすることはできません。 当方は、本ホームページを利用したいかなる理由によっての障害等が発生しても、 その結果本ホームページを利用された本人または他の第三者が被った損害について 一切の責任を負わないものとします。 |
|