SAK 図書館
MySQL 編14 - 文字関数、連結、空白削除、置換、切出、検索、長さ、数値
■文字列連結 ・文字列結合は concat() を使用する。 select concat(123456, 789012); +------------------------+ | concat(123456, 789012) | +------------------------+ | 123456789012 | +------------------------+ select concat('123456', 789012); +--------------------------+ | concat('123456', 789012) | +--------------------------+ | 123456789012 | +--------------------------+ select concat('123456', '789012'); +----------------------------+ | concat('123456', '789012') | +----------------------------+ | 123456789012 | +----------------------------+ select concat(key1, data1) from testm; +---------------------+ | concat(key1, data1) | +---------------------+ | a0011 | | a0111 | | b00210 | | c003100 | +---------------------+ ■char 文字変換 ・char() 関数は、コードに該当する ASCII 文字を返す。 この例では、「1」と言う文字が返る。 select char(49); +----------+ | char(49) | +----------+ | 1 | +----------+ ■ascii コード変換 ・ascii() 関数は、文字に該当する ASCII コードを返す。 この例では、「49」と言う数字が返る。 select ascii('1'); +------------+ | ascii('1') | +------------+ | 49 | +------------+ ■小文字化 ・lower() 関数は、英字を小文字にして返す。 select lower('ABC012'); +-----------------+ | lower('ABC012') | +-----------------+ | abc012 | +-----------------+ ■大文字化 ・upper() 関数は、英字を大文字にして返す。 select upper('abc012'); +-----------------+ | upper('abc012') | +-----------------+ | ABC012 | +-----------------+ ■左文字埋め ・lpad() 関数は、文字列の左に指定文字を埋めて指定数切り出します。 (切り出し指定数になるまで繰り返し埋めます。) select lpad('abc', 5, '0'); +---------------------+ | lpad('abc', 5, '0') | +---------------------+ | 00abc | +---------------------+ select lpad('abc', 5, '012'); +-----------------------+ | lpad('abc', 5, '012') | +-----------------------+ | 01abc | +-----------------------+ ・指定文字省略値はないようで、指定しないとエラーになる。 select lpad('abc', 5, ' '); +---------------------+ | lpad('abc', 5, ' ') | +---------------------+ | abc | +---------------------+ ■右文字埋め ・rpad() 関数は、文字列の右に指定文字を埋めて指定数切り出します。 (切り出し指定数になるまで繰り返し埋めます。) select rpad('abc', 5, '0'); +---------------------+ | rpad('abc', 5, '0') | +---------------------+ | abc00 | +---------------------+ select rpad('abc', 5, '012'); +-----------------------+ | rpad('abc', 5, '012') | +-----------------------+ | abc01 | +-----------------------+ ・指定文字省略値はないようで、指定しないとエラーになる。 select rpad('abc', 5, ' '); +---------------------+ | rpad('abc', 5, ' ') | +---------------------+ | abc | +---------------------+ ■左空白削除 ・ltrim() 関数は、文字列の左側の空白を除去します。 select ltrim(' abc'); +------------------------+ | ltrim(' abc') | +------------------------+ | abc | +------------------------+ ■右空白削除 ・rtrim() 関数は、文字列の右側の空白を除去します。 select ltrim('abc '); +------------------------+ | ltrim('abc ') | +------------------------+ | abc | +------------------------+ ■左右空白削除 ・trim() 関数は、文字列の左右の空白を除去します。 select trim(' abc '); +---------------------------------+ | trim(' abc ') | +---------------------------------+ | abc | +---------------------------------+ ■文字列置き換え ・replace() 関数は、文字列の置き換えをする。 「a0a1a2」中の a0 を b1 に置き換える場合、次のようにします。 select replace('a0a1a2', 'a0', 'b1'); +-------------------------------+ | replace('a0a1a2', 'a0', 'b1') | +-------------------------------+ | b1a1a2 | +-------------------------------+ ・translate() 関数は、ないようである。 ■文字列切り出し ・substring() 関数は、文字列の切り出しをする。 select substring('abc012', 3, 2); +---------------------------+ | substring('abc012', 3, 2) | +---------------------------+ | c0 | +---------------------------+ ・開始位置以降、最後まで切り出す場合は、切り出す文字数を省略できる。 select substring('abc012', 3); +------------------------+ | substring('abc012', 3) | +------------------------+ | c012 | +------------------------+ ■文字列検索 ・locate() 関数は、文字列の検索を行う。 select locate('c0', 'abc012'); +------------------------+ | locate('c0', 'abc012') | +------------------------+ | 3 | +------------------------+ select locate('c0', 'abc012c0', 4); +-----------------------------+ | locate('c0', 'abc012c0', 4) | +-----------------------------+ | 7 | +-----------------------------+ ■文字列の長さ ・length() 関数は、文字列の長さを返す。 select length('abc012'); +------------------+ | length('abc012') | +------------------+ | 6 | +------------------+ ■文字列繰り返し ・repeat() 関数は、文字列を繰り返し返す。 select repeat('abc012', 2); +---------------------+ | repeat('abc012', 2) | +---------------------+ | abc012abc012 | +---------------------+ ■数値から文字列へ変換 (数値フォーマット、書式変換) ・文字列としての結合は concat() を使用する。 select concat(123456, 789012); +------------------------+ | concat(123456, 789012) | +------------------------+ | 123456789012 | +------------------------+ select concat('123456', 789012); +--------------------------+ | concat('123456', 789012) | +--------------------------+ | 123456789012 | +--------------------------+ select concat('123456', '789012'); +----------------------------+ | concat('123456', '789012') | +----------------------------+ | 123456789012 | +----------------------------+ ・三桁毎にカンマを付けるには、次のようにする。 select format(123456, 0); +-------------------+ | format(123456, 0) | +-------------------+ | 123,456 | +-------------------+ select format(123456, 2); +-------------------+ | format(123456, 2) | +-------------------+ | 123,456.00 | +-------------------+ ■文字列から数値へ変換 ・勝手にやるみたいです。 select '0123' + 100; +--------------+ | '0123' + 100 | +--------------+ | 223 | +--------------+ select '0123' + '100'; +----------------+ | '0123' + '100' | +----------------+ | 223 | +----------------+ ■型変換 ・cast() 関数は、ANSI 規程の変換関数です。 select cast(concat('123', '456') as signed); +--------------------------------------+ | cast(concat('123', '456') as signed) | +--------------------------------------+ | 123456 | +--------------------------------------+ select cast(concat('-123', '456') as unsigned); +-----------------------------------------+ | cast(concat('-123', '456') as unsigned) | +-----------------------------------------+ | 18446744073709428160 | +-----------------------------------------+ select cast(123 + 100 as char); +-------------------------+ | cast(123 + 100 as char) | +-------------------------+ | 223 | +-------------------------+ ■MySQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料