【MySQL 文字列関数】
LEFT関数
LEFT関数は左から指定の文字数を取得します。
項目
|
内容
|
書式
|
left(文字列, 文字数)
|
文字列
|
テーブルのフィールドもしくは文字や数字を入れます。
|
文字数
|
何文字分を取得するか?という数字を入力します。
|
全角、半角の大きさに関係なく1文字とみなして左からの文字数文、文字列を取得します。
何をいっているのか?というと英語はアルファベットを使います。
一方日本語はひらがなや漢字を使っています。
文章をあらわすのは英語でしたが、日本人も使うのでひらがなや漢字を使えるようになりました。
しかし、アルファベットの大きさでは表現できないため2倍の大きさが必要になったのです。
そのため、次のようなルールができました。
種類
|
全角/半角
|
領域
|
バイト数
|
アルファベット
|
半角
|
1つの領域が必要
|
1バイト
|
ひらがな・漢字
|
半角
|
2つの領域が必要
|
2バイト
|
アルファベットからみるとひらがなや漢字は文字2個分になります。
このことから何バイト?という視点から1文字目なの?2文字目なの?ということが気になりだしたのです。
このため、プログラムをする際に全角半角を対象とした開発をする場合は
全角を1文字とみるのか?2文字分とみるのか?
という意識が仕様によっては必要になります。
/* 数字のみケース 2文字を取得するケース */
select "left(12345,2)" as "SQL", left(12345,2) as 結果 from dual
数字を左から2文字分を取得します。
MySQL Workbench上で実行したのですが、数字でも文字列と同じように
左から指定の数字を取得できました。
|
/* ひらがなのみケース 2文字を取得するケース */
select "left('あいうえお',2)" as "SQL", left('あいうえお',2) as 結果 from dual
ひらがなを左から2文字分取得します。
|
/* 数字のみケース 文字数を超えたケース */
select "left(12345,6)" as "SQL", left(12345,6) as 結果 from dual
数字の桁数を超えた数字を指定した場合、対象の数字がそのまま返りました。
|
/* ひらがなのみケース 文字数を超えたケース */
select "left('あいうえお',6)" as "SQL", left('あいうえお',6) as 結果 from dual
文字数を超えた数字を指定した場合、対象の文字列全てが返りました。
|
/* アルファベットとひらがなのケース */
select "left('あaいiうuえeおo',4)" as "SQL", left('あaいiうuえeおo',4) as 結果 from dual
全角と半角の文字が混在している文字列から文字数を指定した場合、全角、半角関係なく4文字分の文字列が返りました。
|
/* 文字がないケース */
select "left('',1)" as "SQL", left('',1) as 結果 from dual
何もない空文字が返りました。
|
ちなみに図の結果のとおり、指定文字数の箇所に「0」や「マイナス(この例であれば-1)」を指定しても何も起こりません。
※MySQL Workbenchで実行したケース
「MySQL 5.6 Command Line Client」で実行したケース
この結果を見る限りでは、特にエラーを出さないようにしてくれているようです。
対象文字列に「NULL」を指定した場合は、「NULL」が返ります。
|
|
著作権情報 | 本ホームページに掲載されている情報等については、いかなる保証もいたしません。 本ホームページを通じて入手したいかなる情報も複製、販売、出版または使用させたり、 または公開したりすることはできません。 当方は、本ホームページを利用したいかなる理由によっての障害等が発生しても、 その結果本ホームページを利用された本人または他の第三者が被った損害について 一切の責任を負わないものとします。 |
|