#navi(../)
* PostgreSQLでLeft,Right,Midの代替方法・substring関数 [#r77808cd]
substring関数を使って、VisualBasicやAccessなどにあるLeft関数, Right関数, Mid関数と同じような使い方を以下に記します。

#contents
#htmlinsertpcsp(db-top.html,db-sp.html)

* 本記事の環境とデータ [#a5844d44]
-環境~
OS : CentOS5~
PostgreSQL : 8.4.13

-使用したテーブルとテーブル~
 sakura=# create table substr (l varchar(10), r varchar(10), m varchar(10));
 CREATE TABLE
 sakura=# insert into substr values('0123456789','abcdefghij', 'ABCDEFGHIJ');
 INSERT 0 1
 sakura=# select * from substr;
      l      |     r      |     m      
 ------------+------------+------------
  0123456789 | abcdefghij | ABCDEFGHIJ
 (1 行)

* substring関数を使ってRight [#xa1e12f8]
substrテーブルのrカラムを使ってRightを実現してみます。~
substringの構文は以下のようになります。
 substring(文字列, length(文字列) - 右から取得する文字列数 + 1, length(文字列))
または
 substring(文字列 from length(文字列) - 右から取得する文字列数 + 1 for length(文字列))
以下に上記の構文を実行した例を記します。~
文字列の右からが3文字取得します。

 sakura=# select substring(r, length(l) - 3 + 1, length(l)) from substr;
  substring 
 -----------
  hij
 (1 行)
 
 sakura=# select substring(r from length(l) - 3 + 1 for length(l)) from substr;
  substring 
 -----------
  hij
 (1 行)

* substring関数を使ってLeft [#p6b768f1]
substrテーブルのlカラムを使ってLeftを実現してみます。~
substringの構文は以下のようになります。
 substring(文字列, 開始位置, 開始位置を含めた文字数)
または
 substring(文字列 from 開始位置 for 開始位置を含めた文字数)
以下に上記の構文を実行した例を記します。~
開始位置が先頭(1)で5文字取得します。

 sakura=# select substring(l, 1, 5) from substr;
 substring 
 -----------
  01234
 (1 行)

 sakura=# select substring(l from 1 for 5) from substr;
  substring 
 -----------
  01234
 (1 行)

* substring関数を使ってMid [#a17ae4c3]

 Midに関しては、substring関数をそのまま利用することができます。~
 substringの構文は以下の通りです。
  substring(文字列, 開始位置、取得文字数)
 または
  substring(文字列 from 開始位置 for 取得文字数)
 
 以下に上記の構文を実行した例を記します。~
 開始位置が3文字目で4文字取得してみます。
 sakura=# select substring(m, 3, 4) from substr;
  substring 
 -----------
  CDEF
 (1 行)
 
 sakura=# select substring(m from 3 for 4) from substr;
  substring 
 -----------
  CDEF
 (1 行)

* substring関数に直に文字列を設定し実行 [#y074fb7f]
substring関数の文字列を指定する部分は、テーブルのカラム以外に文字列を直に設定し実行することもできます。~
以下に例を記します。

 sakura=# select substring('Hello world!', 1, 5);
  substring 
 -----------
  Hello
 (1 行)

以上、PostgreSQLでsubstring関数を用い、Left, Right, Mid関数と同様の機能を実現する方法でした。

#htmlinsertpcsp(db-btm.html,db-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS