HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

Derby

SQLExceptionから取得できるSQLSTATEとエラーコード

ふとjava.sql.SQLExceptionのJavaDocを見ていたら、SQLSTATEとベンダー固有のエラーコードを取得できることに(いまさら)気づいた。 ベンダー固有のエラーコードはログに吐き出すくらいしか用途を思いつかないが、SQLSTATEはある程度規格化されているはずなの…

指定した範囲の行を取得するクエリ

DB2 Express-C v9.7.2のWindows版で使えていたLIMIT/OFFSETが同Linux版で使えなくて、プラットフォームによって違うのかと思ってしまい、同等のことができる構文をいろいろと調べた挙句、インストール直後の設定が違っていただけという。 で、せっかくなので…

文字列型とマルチバイト文字

MySQLで、何も考えずに「VARCHAR(n)」な列に日本語n文字を格納しようとしたら格納できてしまい、DB2での記憶と違うということで一通り調べてみたらしい。作ったテーブルは次のとおり。 CREATE TABLE tbl1(str CHAR(6) NOT NULL) CREATE TABLE tbl2(str NCHAR…

テーブル名や列名の別名の指定

はじめに - SQL標準規格では SQL標準規格によると、SQL文ではテーブル名や列名の別名を次のように指定することができることになっている。(いずれも、キーワード AS は省略可能) SELECT t.col2 [AS] c2 FROM tbl [AS] t WHERE t.col1 = 1 UPDATE tbl [AS] t …

CURRENT_TIMESTAMPをTIMESTAMP型の列のデフォルト値に指定してみる

一見するとなんてことはない。 つまりは次のようなテーブル定義をするということ。 CREATE TABLE xxx( id INT NOT NULL , ts1 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , ts2 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ) 2つのタイムスタンプを必…

文字列の連結

SQLにおける文字列連結は「縦棒2本(||)」という自分の中の常識が打ち破られたらしい。 ということで、次のテーブルを前提として調査してみた。 CREATE TABLE hoge( v1 VARCHAR(4) NOT NULL , v2 VARCHAR(4) NOT NULL , v3 VARCHAR(4) NOT NULL , v4 VARCHAR(…

列名を持たない列の列名(意味不明)

なんと言えばいいのか分からなかったので意味不明なタイトルになったが、要は次のようなクエリを実行したときの結果表の列名はどうなるのか、ということ。 SELECT COUNT(*) FROM hoge ということで、一通り調べてみた。 次のテーブルを前提とする。 CREATE T…

各DBMSで日付型の値から曜日を取り出す

最初、PostgreSQLでdate_part関数を使用している処理があって、それをMySQLではどう書けばいいかというのを調べたことから始まったのだが。 手始めに次のブログを見つけた。 馬場誠Blog(東京都世田谷区経堂のWebクリエイター)» ブログアーカイブ » MySQLで…