【MySQL 文字列関数】
INSERT関数
insert関数は指定の位置から○文字分を対象の文字列と置き換えします。
INSERT( 文字列, 挿入位置, 置換する文字数, 置換する文字列 )
|
引数
|
内容
|
文字列
|
テーブルのフィールドでも問題ありません。
|
挿入位置
|
文字列の1文字目から数えていき、何文字目?を指定してください。
|
置換する 文字数
|
何文字分を置換する、すなわち、何文字分を削るのか?を指定してください。
|
置換する 文字列
|
どんな文字列に置き換えるのか?を指定してください。
|
何をいっているのか?というと英語はアルファベットを使います。
一方日本語はひらがなや漢字を使っています。
文章をあらわすのは英語でしたが、日本人も使うのでひらがなや漢字を使えるようになりました。
しかし、アルファベットの大きさでは表現できないため2倍の大きさが必要になったのです。
そのため、次のようなルールができました。
種類
|
全角/半角
|
領域
|
バイト数
|
アルファベット
|
半角
|
1つの領域が必要
|
1バイト
|
ひらがな・漢字
|
半角
|
2つの領域が必要
|
2バイト
|
アルファベットからみるとひらがなや漢字は文字2個分になります。
このことから何バイト?という視点から1文字目なの?2文字目なの?ということが気になりだしたのです。
このため、プログラムをする際に全角半角を対象とした開発をする場合は
全角を1文字とみるのか?2文字分とみるのか?
という意識が仕様によっては必要になります。
select insert('あいうえお', 1, 1, 'か') from dual
全角の文字列から1番目の文字を1文字分「か」に変更しています。
|
select insert('12345', 1, 1, '0') from dual
半角数字の1番目の文字を1文字分「0」に変更しています。
|
select insert('あいうえお', 2, 1, 'ん') from dual
全角の文字列から2番目の文字を1文字分「ん」に変更しています。
|
select insert('12345', 2, 1, '-') from dual
半角数字の2番目の文字を1文字分「-」に変更しています。
|
select insert('試験は難しかったですか?', 4, 1, 'やさ') from dual
全角の文字列から4番目の文字を1文字分「やさ」に変更しています。
|
select insert('1234567890', 3, 2, 'XX') from dual
半角数字3番目の文字を2文字分「XX」に変更しています。
|
select insert('全角は2文字で表されます。', 3, 2, 'XX') from dual
全角および半角が混じっている文字列から3番目の文字を2文字分「XX」に変更しています。
この結果から全角と半角の区別なく実行されていることが分かります。
|
select insert('abc3@ is homepage URL.', 5, 1, '.me') from dual
半角数字5番目の文字を1文字分「.me」に変更しています。
|
ここで「@」の位置が分かるとプログラムのように置き換えができます。
文字位置を知る関数に「INSTR」関数があります。
これを利用すると次のように実行結果を変更できます。
関数を多用するのはお勧めできませんが、このようにすることにより、ある程度、動的に処理結果を取得できます。
「'abc3@ is homepage URL.'」の部分がテーブルのフィールドでも構いません。
「.me」の部分はパラメータとなれば置き換えが楽になると思います。
|
|
著作権情報 | 本ホームページに掲載されている情報等については、いかなる保証もいたしません。 本ホームページを通じて入手したいかなる情報も複製、販売、出版または使用させたり、 または公開したりすることはできません。 当方は、本ホームページを利用したいかなる理由によっての障害等が発生しても、 その結果本ホームページを利用された本人または他の第三者が被った損害について 一切の責任を負わないものとします。 |
|