SQL 関数:文字関数
一覧
関数 | 取得 | 例 | 結果 |
---|---|---|---|
UPPER | 大文字変換 | UPPER( 'aaa' ) | 'AAA' |
LOWER | 小文字変換 | LOWER( 'AAA' ) | 'aaa' |
INITCAP | 先頭大文字変換 | INITCAP( 'aaa' ) | 'Aaa' |
LPAD | 文字埋め(左側) | LPAD( 'AAA' , 5 , '0' ) | '00AAA' |
RPAD | 文字埋め(右側) | RPAD( 'AAA' , 5 , '0' ) | 'AAA00' |
SUBSTR | 切り出し | SUBSTR( 'ABC' , 2 , 2 ) | 'BC' |
TRIM | 切り捨て | TRIM( ' AA BB ' ) | 'AA BB' |
REPLACE | 置換 | REPLACE( 'ABC', 'B' , 'X' ) | 'AXC' |
CONCAT | 接続 | CONCAT( 'AA' , 'BB' ) | 'AABB' |
LENGTH | 文字数 | LENGTH( 'AAA' ) | 3 |
INSTR | 文字位置 | INSTR( 'ABC' , 'A' ) | 1 |
大文字/小文字
LOWER('ABC DEF')
⇒'abc def'
大文字変換
UPPER('abc def')
⇒'ABC DEF'
先頭文字のみ大文字変換
INITCAP('ABC DEF')
⇒'Abc Def'
INITCAP('abc def')
⇒'Abc Def'
0埋め
LPAD('ABC', 5, '*')
⇒'**ABC'
指定文字埋め(左寄せ)
RPAD('ABC', 5, '*')
⇒'ABC**'
これがINTEGER型だと、545となる。
この場合、0埋めは上手く行かない。
SELECT RIGHT('0000'+ 列名, 2) FROM [TABLE]
正しくは、
SELECT RIGHT('0000'+ CONVERT(VARCHAR,列名), 2) FROM [TABLE]
切り出し
※VBで言うMid()関数
SUBSTR('ABCDEF' ,1 ,3)
⇒'ABC'
SUBSTR('ABCDEF' ,-3)
⇒'DEF'
col1,
col1列の3文字目から1文字切り取り
substring(col1 from 3 for 1)
col1が数値型の場合
substring('' || col1 from 3 for 1)
from
~
SUBSTRING( expression, start, length )
SELECT SUBSTRING( 列名, 1, 2) FROM [TABLE]
LEFT
SELECT LEFT(列名,2) FROM [TABLE]
※VBと同じ使い方
RIGHT
SELECT RIGHT(列名,2) FROM [TABLE]
※VBと同じ使い方
DBの種類によっては使えない(Oracle等)。
切り捨て
TRIM(' abc def ')
⇒'abc def'
※真ん中の半角スペースは削除されない。全角スペースは前後にあっても無視。
前後の指定文字削除
TRIM('G' FROM 'GoodMorning')
⇒'oodMorning'
TRIM(' ' FROM ' abc def ')
⇒'abc def' ※TRIM(' abc def ')と同じ
BOTH/LEADING/TRAINLING ※省略可(BOTHがデフォルト)
TRIM(BOTH ' ' FROM ' abc def ')
⇒'abc def' ※TRIM(' abc def ')と同じ
TRIM(LEADING ' ' FROM ' abc def ')
⇒'abc def '
TRIM(TRAILING ' ' FROM ' abc def ')
⇒' abc def'
置換
⇒'Wood'
regexp_replace( 対象, 検索, 置換 [,繰り返し])
regexp_replace( ' a a a ', '(\s| )', '', 'g')
→aaa
接続
文字数
⇒3
⇒3
CHAR_LENGTH('ABC')
CHARACTER_LENGTH('ABC')
も可(同機能)