My Photo

« アップロード機能に対するDoS攻撃 | Main | 共通表式(共通テーブル式) »

February 13, 2014

PostgreSQLの"::"はキャスト

PostgreSQLのことをググっていると、よくSQLに "::" というのが出てくる。なんじゃこりゃと思っていたが、リファレンスを見たらこれはキャストの記号だった。
以下の2つは同じこと。

CAST ( expression AS type )
expression::type

演算子の優先順位の表に載っていたからキャスト演算子なんだろうか?

キャストなしのSQL

SELECT now()

結果

now
timestamp with timezone
2014-02-13 20:35:45.678+09

キャストを付けたSQL

SELECT now()::date

結果

now
date
2014-02-13

また、次のようなテーブルがあるとする。

CREATE TABLE tbl1 (
  id Integer PRIMARY KEY, 
  value varchar(20)
)

キャストなしのSQL

SELECT 1, 'abc'

結果

?column?
integer
?column?
unknown
1 abc

キャストを付けたSQL

SELECT ((1, 'abc')::tbl1).*

結果

id
integer
value
character varying(20)
1 abc

tbl1型にキャストすると、単なる1と'abc'ではなくtbl1を検索した結果という扱いになるようだ。

参考文献:WEB+DB PRESS Vol.66 SQL緊急救命室 第5回

参考サイト:PostgreSQL 8.4.4文書 4.2.9. 型キャスト

« アップロード機能に対するDoS攻撃 | Main | 共通表式(共通テーブル式) »

PostgreSQL」カテゴリの記事

SQL」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/59126305

Listed below are links to weblogs that reference PostgreSQLの"::"はキャスト:

« アップロード機能に対するDoS攻撃 | Main | 共通表式(共通テーブル式) »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof