最近調べたこと PostgreSQL シーケンス、LIKEのエスケープ

シーケンス

シーケンスの作成など、操作する方法を知らなかったのでいろいろ調べました。

 

作成

CREATE SEQUENCE hoge_seq START WITH 1;

 

 

現在の値を取得

currval()

nextval()がされていないと取得できない。エラーになる。

SELECT currval('user_id_seq') as id_seq;

 

 

次の値を取得

nextval()

現在の値に+1して、その値を取得する。

SELECT nextval('user_id_seq') as id_seq;

 

 

任意の値を設定

setval()

任意の値を設定できる。0は設定できない。

第3引数にfalseを指定すると、次にnextval()をした時に、設定した値と同じ値を取得できる。

SELECT setval(‘hoge_seq’,1,false); とすれば、nextval()した時に1が取得できる。

SELECT setval('hoge_seq',1);

SELECT setval('hoge_seq',1,false);

 

 

LIKE検索のエスケープ PHP

LIKE検索のエスケープ。これで正しいのかはわかりませんが、忘れないために残しておく。

「\\」「_」「&」の前に「\」を付けるように置換する。

$keyword = str_replace(['\\','_','%',],['\\\\','\_','\%',],$keyword);

もっと別のやり方があるかもしれませんが、とりあえず自分はこのように対応しました。