MySQLで行番号を表示したいとき。OracleにはROW_NUMBERってのがあるので、似たような機能がないか探したところ面白い方法を見つけた。 良く紹介されているのは、ユーザー変数を利用して、 set @i:=0; select @i:=@i+1 as rownum,user_id from user; という感じで、2つSQLを発行するパターン。 これを1つのSQLで行う方法があった。 select @i:=@i+1 as rownum,user_id from (select @i:=0) as dummy,user; サブクエリでユーザー変数を初期化している。 こんな発想はなかったなぁ。素晴らしい。 これでそれっぽく行番号を取得できるのだが、 MySQLのサイトの8.4. ユーザによって定義された変数にて、以下の内容があった。 ユーザ変数の評価順序は定義されておらず、与えられたク
PostgreSQLとOracle Databaseのアーキテクチャ構造 本シリーズの最終回は、PostgreSQLと、商用RDBMSとして普及しているOracle Databaseとの違いについて簡単にご紹介していきます。 「第1回:PostgreSQLの概要とアーキテクチャ」で、PostgreSQLアーキテクチャの概要図を説明しましたが、PostgreSQLとOracle Databaseは同じような役割を担ったプロセスやファイルで構成されていることがわかります(表1および表2参照)。 また、図1にあるプロセスとデータベース構成ファイルを解説すると、以下のようになります。 クライアントから接続要求を受けてデータベースと通信するためのプロセスを起動する。 クライアントからのSQL要求を処理するプロセスが、ディスク上にあるデータをメモリ上に保持する。 メモリ上の変更内容は専用のプロセスによ
(※1) Oracle 12c において、初期化パラメータ COMPATIBLE = 12.0.0.0以上、MAX_STRING_SIZE = EXTENDED でデータベースを構築またはアップグレードしておく必要がある。従来型と異なる表外格納形式、索引が桁あふれから特殊な方式になることもあってか現行のデフォルト設定ではない。(Oracle12c R2 時点) (※2) 上限が 4000 バイトの場合、UTF8(1〜4byte) 最短 1333 文字 AL32UTF8(1〜4,6 byte) Oracle 10g R2 (Unicode 4.0) では 最短 666 文字、Oracle 11g (Unicode 5.0) では 1000 文字となる。 Oracle 12c で 初期化パラメータ MAX_STRING_SIZE = EXTENDED で 構築している場合には 8191 文字が
日本のオラクル・コミュニティが一堂に会するプレミア・イベントにぜひご参加ください。新しいスキルを身に付け、業界エキスパートと交流し、複雑なビジネス課題を解決するためのソリューションを発見しましょう。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く