trimは通常、文字列の前後の半角スペースを削除して取得する場合に使用する場合が多いと思いますが、引数へLEADING、TRAILING、BOTHを指定することで任意の文字や文字列を削除して取得することが出来ます。
サンプルテーブル
- 「goods」テーブル

TRIMに引数「LEADING」を指定した場合
TRIMに引数「LEADING」を指定することで文字列の先頭にある任意の文字や文字列を削除することが出来ます。
- クエリー(SQL)例
|
SELECT TRIM(LEADING '商品' From name) FROM goods ORDER BY id; |
- 実行結果

TRIMに引数「TRAILING」を指定した場合
TRIMに引数「TRAILING」を指定することで文字列の末尾にある任意の文字や文字列を削除することが出来ます。
- クエリー(SQL)例
|
SELECT TRIM(TRAILING 'A' From name) FROM goods ORDER BY id; |
- 実行結果

TRIMに引数「BOTH」を指定した場合
TRIMに引数「BOTH」を指定することで文字列の先頭と末尾にある任意の文字や文字列を削除することが出来ます。
- クエリー(SQL)例
|
SELECT TRIM(BOTH 'A' From name) FROM goods ORDER BY id; |
- 実行結果

SQLで大文字⇒小文字に変換する場合はLCASE関数 or LOWER関数、小文字⇒大文字へ変換するにはUCASE関数 or UPPER関数を使用します。DBMS毎で使用出来る関数が異なるので整理しておきます。
サンプルではPostgreSQLでの使用例となります。
関数\DBMS | MySQL | PostgreSQL | SQL Server | Oracle |
UCASE
※小文字 ⇒ 大文字 | ○ | ✕ | ✕ | ✕ |
UPPER
※小文字 ⇒ 大文字 | ✕ | ○ | ○ | ○ |
LCASE
※大文字 ⇒ 小文字 | ○ | ✕ | ✕ | ✕ |
LOWER
※大文字 ⇒ 小文字 | ✕ | ○ | ○ | ○ |
サンプルテーブル
- 「goods」テーブル

UPPER関数(小文字 ⇒ 大文字へ変換)の使用例
- クエリー(SQL)例
|
SELECT UPPER(name) FROM goods ORDER BY id; |
- 実行結果

LOWER関数(大文字 ⇒ 小文字へ変換)の使用例
- クエリー(SQL)例
|
SELECT LOWER(name) FROM goods ORDER BY id; |
- 実行結果

SQLで一部の文字列を取得するにはSUBSTR関数やLEFT関数、RIGHT関数を使用することで可能となります。DBMS毎に利用できる関数に違いがありOracleではLEFT関数、RIGHT関数は使用出来ません。
関数\DBMS | MySQL | PostgreSQL | SQL Server | Oracle |
SUBSTR or SUBSTRING | ○ | ○ | ○ | ○ |
LEFT | ○ | ○ | ○ | ✕ |
RIGHT | ○ | ○ | ○ | ✕ |
サンプルテーブル
- 「goods」テーブル

SUBSTR関数の使用例
LEFT関数の使用例
RIGHT関数の使用例
SQLで文字列置換をするにはREPLACE関数を使用することで可能となります。類似の関数にTRANSLATE関数がありますが、こちらは文字列単位ではなく1文字ずつ文字単位で置換します。
ここではPostgreSQLでの実行サンプルをベースに説明していきます。
サンプルテーブル
- 「goods」テーブル

REPLACE関数の使用例
TRANSLATE関数の使用例
SQLで文字列を結合(連結)して取得するためにはCONCAT関数やCONCAT_WS関数、文字列結合子「||」を使用することで可能となります。DBMS毎で微妙に違いはありますが、ここではPostgreSQLでの実行サンプルをベースに説明していきます。
サンプルテーブル
- 「goods」テーブル

CONCAT関数の使用例
文字列結合子「||」の使用例
CONCAT_WS関数の使用例
SQLで複数のSELECTで問い合わせた結果を連結したいという場合は集合演算子関数と言われる「UNION」や「UNION ALL」演算子を使用することで取得可能となります。
イメージ図
- UNIONは重複行を削除して取得するので「A & C」を取得出来ます。
- UNION ALLは重複行を含めて取得するので「A & B & C」を取得出来ます。

サンプルテーブル
UNIONの使用例
サンプルテーブル「goods」をUNIONで連結して取得するサンプルとなります。
- SQL(クエリー)
|
SELECT id,name,type_code FROM goods WHERE name = '商品A' UNION SELECT id,name,type_code FROM goods WHERE type_code = '101' |
- 出力結果

UNION ALLの使用例
サンプルテーブル「goods」をUNION ALLで連結して取得するサンプルとなります。
- SQL(クエリー)
|
SELECT id,name,type_code FROM goods WHERE name = '商品A' UNION ALL SELECT id,name,type_code FROM goods WHERE type_code = '101' |
- 出力結果

SQLでシステム日付を取得するにはMySQLやPostgreSQlとOracleでは少し異なるのでメモしておきます。
システム日付を取得するSQL:MySQL、PostgreSQL
date型で取得、time型で取得、timestamp型で取得する方法がありますがOracleのsysdateに相当するという意味でtimestamp型の方法をご紹介します。
または
|
SELECT CURRENT_TIMESTAMP; |
システム日付を取得するSQL:Oracle
|
SELECT SYSDATE FROM DUAL; |
OracleでのTRUC関数と類似したものにPostgreSQLではDATE_TRUNC関数があります。
DATE_TRUNC関数は「DATE_TRUNC([‘精度’],[列名])」形式で指定する事で取得できます。
使用例
サンプルテーブル「goods」
クエリー(SQL)
サンプルテーブル「goods」のtype_code=’102’のadd_dateをサンプルとしてDATE_TRUNC関数で抽出してみます。
|
SELECT DATE_TRUNC('year',add_date), -- 精度に'year' を指定し年で切り捨て DATE_TRUNC('month',add_date), -- 精度に'month' を指定し月で切り捨て DATE_TRUNC('day',add_date), -- 精度に'day' を指定し日で切り捨て DATE_TRUNC('hour',add_date), -- 精度に'hour' を指定し時で切り捨て DATE_TRUNC('minute',add_date), -- 精度に'minute'を指定し分で切り捨て DATE_TRUNC('second',add_date) -- 精度に'second'を指定し秒で切り捨て FROM goods WHERE type_code = '102'; |
出力結果

データベース製品のライセンス一覧です。
製品名 | オープンソース/商用 | ライセンス | データ
モデル | 料金 |
DB2 | 商用 | IBM | ORDBMS | 1プロセッサ
・461万7000円
2年目から5年目の保守料
・88万700円/年
1プロセッサで5年間運用した場合のコスト
・813万9800円 |
HiRDB | 商用 | 日立製作所 | RDBMS | 同時接続数ライセンス
・120,000円
1プロセッサ
・1,800,000円 |
MySQL | オープンソース | GPL or 商用 | RDBMS | 1-4 ソケットサーバー 1台/年(税抜)
・Standard Edition:240,000
・Enterprise Edition:600,000
・Cluster Carrier Grade Edition:1,200,000
5+ ソケット・サーバー/年(税抜)
・Standard Edition:480,000
・Enterprise Edition:1,200,000
・Cluster Carrier Grade Edition:2,400,000 |
Oracle Database | 商用 | オラクル | RDBMS | |
PostgreSQL | オープンソース | BSD | ORDBMS | 無料 |
「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。