【MySQL 文字列関数】
CONCAT関数
concat関数は文字列をつなげて表示することができます。
全角半角関係なく、1文字を1として数えています。
何をいっているのか?というと英語はアルファベットを使います。
一方日本語はひらがなや漢字を使っています。
文章をあらわすのは英語でしたが、日本人も使うのでひらがなや漢字を使えるようになりました。
しかし、アルファベットの大きさでは表現できないため2倍の大きさが必要になったのです。
そのため、次のようなルールができました。
種類
|
全角/半角
|
領域
|
バイト数
|
アルファベット
|
半角
|
1つの領域が必要
|
1バイト
|
ひらがな・漢字
|
半角
|
2つの領域が必要
|
2バイト
|
アルファベットからみるとひらがなや漢字は文字2個分になります。
このことから何バイト?という視点から1文字目なの?2文字目なの?ということが気になりだしたのです。
このため、プログラムをする際に全角半角を対象とした開発をする場合は
全角を1文字とみるのか?2文字分とみるのか?
という意識が仕様によっては必要になります。
実行したSQLから次のことが分かると思います。
・文字列同士の組み合わせ
・文字列と数字の組み合わせ
・文字列と数字と記号の組み合わせ(今回は「+」や「=」が入っている例)
でも、結合してくれます。
「'」(シングルコーテーション)を表したい場合は「'」の前に「\」(円マーク)をつけてください。
(例)
「\'」 → 「'」
複数の文字列を結合したい場合は例にあるように「,」(カンマ)で区切って文字列を追加してください。
文字列結合はSQL上で実行するか?
取得した結果をプログラム上で文字列結合するか分かれるところです。
※SQL実行計画および実行に負担をかけないためにプログラム上で実行するという考え方があるため。
現場の判断によるところもあるので、指示にしたがったほうがいいと思います。
【実行結果】
select "concat('abc3','.me')" as 'SQL', concat('abc3','.me') as 結果 from dual
「abc3」と「.me」をつなげています。
|
select "concat('ABC3','.ME')" as 'SQL', concat('ABC3','.ME') as 結果 from dual
「ABC3」と「.ME」をつなげています。
|
select "concat(123,456)" as 'SQL', concat(123,456) as 結果 from dual
「123」と「456」をつなげています。
|
select "concat('\'test','\'')" as 'SQL', concat('\'test','\'') as 結果 from dual
「'」(シングルコーテーション)を表すため「\」をつけて「'test'」と表示しています。
|
select "concat('one plus two = ','3')" as 'SQL',
concat('one plus two = ','3') as 結果 from dual
文字列「'one plus two = 」と文字列「3」をつなげています。
|
select "concat('one + two = ',3)" as 'SQL',
concat('one + two = ',3) as 結果 from dual
「one + two = 」と「3」をつなげています。
|
select "concat('CONCAT関数 ', 'は', '文字を', '結合できます。')" as 'SQL',
concat('CONCAT関数 ', 'は', '文字を', '結合できます。') as 結果 from dual
複数の文字列をつなぎあわせています。
|
|
|
著作権情報 | 本ホームページに掲載されている情報等については、いかなる保証もいたしません。 本ホームページを通じて入手したいかなる情報も複製、販売、出版または使用させたり、 または公開したりすることはできません。 当方は、本ホームページを利用したいかなる理由によっての障害等が発生しても、 その結果本ホームページを利用された本人または他の第三者が被った損害について 一切の責任を負わないものとします。 |
|