[rank:a]の検索結果



「先頭からn件のレコード(結果セット)だけ取得する方法が知りたい。」というのは、データベース関連のメーリングなどで以前からよくある質問ですが、SQL ServerやOracle、MySQL、PostgreSQLなどRDBやバージョンによって利用可能な方法がそれぞれ異なるので簡単にまとめてみました。


Microsoft SQL Server 7.0 以降


Microsoft SQL Server 7.0 以降 では TOP が使用できるので、

SELECT TOP 10 *
FROM Table1
ORDER BY Field1

と記述することによって、先頭から上位10件の結果セットを取得することができます。

Oracle8i R8.1.5 以降


Oracle8i R8.1.5 以降ではサブクエリー内で ORDER BY が使用できるようになったので、例えば Field1 の昇順に上位10件を取得するような場合は、

SELECT *
FROM (SELECT * FROM Table1 ORDER BY Field1) A
WHERE ROWNUM <= 10;

と記述することによって、先頭から10件の結果セットを取得することができます。

MySQL


MySQLの場合は以下のようにLIMIT句を使用することで、指定した位置(先頭からの場合は0)から指定した件数のレコードを取得することができます。

SELECT * FROM Table1
ORDER BY Field1
LIMIT 0, 10;

PostgreSQL


PostgreSQLの場合は以下のようにLIMITとOFFSETを指定することで、
OFFSETで指定した位置から、LIMIT数分のレコードを取得することができます。

SELECT * FROM Table1
ORDER BY Field1
OFFSET 0 LIMIT 10;

その他のRDB


また、不運にも上記以外の RDB を使用しなければならない場合でも、以下のようなSQL文で、Table1 から Field1 の昇順に Field1, Field2, Field3 の結果セットを先頭から10件取得することができます。

SELECT DISTINCT COUNT(*), A.Field1, A.Field2, A.Field3 FROM Table1 A, Table1 B
WHERE (A.Field1 >= B.Field1)
GROUP BY A.Field1, A.Field2, A.Field3
HAVING COUNT(*) <= 10;

プログラマのためのSQL 第4版
翔泳社 著者:ジョー・セルコ,Joe Celko


amazon.co.jpのカスタマーレビューを見る
powered by amalink


(追記あり)
[148] Posted by kagahiro at 2005/03/21 16:34:00
5 point | Link (17) | Trackback (1) | Comment (4)

HTMLファイルのフォームからPerlのCGIでHTMLファイルを更新し、

print "Location: htmlファイルのURL""\n\n";

でそのHTMLファイルを表示しても、更新前の古い状態で表示されてしまいます。

だからといって、

<body onLoad="location.reload();">

という記述では、リロードの無限ループになってしまいます。

以下のJavaScriptをHTMLファイルに追加することで1回だけリロードすることができるようです。

<script type="text/javascript">
<!--
var __onload_flag = window.onload;
window.onload = function() {
    if (__onload_flag) {
        __onload_flag();
        location.reload();
    }
}
//-->
</script>

[2270] Posted by kagahiro at 2013/02/15 13:47:02
0 point | Link (1) | Trackback (0) | Comment (0)

C言語のstrncpy関数やmemcpy関数ではバイト単位の操作になるので、漢字、ひらがな、カタカナなどの全角文字を文字数で指定して部分文字列を取り出すことができません。 そこで半角英数も全角文字も1文字として部分文字列を取り出すことができる関数を作成します。

以下はそのコードです。[C言語]UTF-8でエンコードされた文字列の文字数を取得するコードと同様に、文字の1バイト目のビットの状態を調べることによってその文字が何バイト文字を判定しています。

#include <stdio.h>
#include <string.h>

char *substr_utf8(char *dest, char *src, int offset, int len);
int _bytesize(unsigned char code);


int main(void)
{
    char *testStr = "ABCDEFGあいうえおアイウエオ愛夢佐々木";
    char strBuf[256];

    memset(strBuf, 0sizeof strBuf);

    printf("substr_utf8($testStr, 0, 5) = %s\n", substr_utf8(strBuf, testStr, 05));
    printf("substr_utf8($testStr, 3, 3) = %s\n", substr_utf8(strBuf, testStr, 33));
    printf("substr_utf8($testStr, 10, 4) = %s\n", substr_utf8(strBuf, testStr, 104));
    printf("substr_utf8($testStr, 13, 5) = %s\n", substr_utf8(strBuf, testStr, 135));

    return 0;
}

/* UTF-8でエンコードされた文字列の部分文字列を取り出す */
/* substr_utf8 (文字列式, オフセット, 長さ)*/
char *substr_utf8(char *dest, char *src, int offset, int len)
{
    int srclen = strlen(src);
    int pos = 0;
    int count = 0;
    char *cp = dest;

    while (pos < srclen) {
        unsigned char code;
        code = *(src + pos); /* ASCIIコード値を取得 */
        int bytelen = _bytesize(code);

        if (count >= offset && count < (offset + len)) {
            memcpy(cp, (src + pos), bytelen);
            cp += bytelen;
            *cp = '\0';
        }
        pos += bytelen;
        count++; /* 文字数をカウント */
    }

    return dest;
}

/* 文字のバイト長を求める */
int _bytesize(unsigned char code)
{
    int size = 1;
    int i;

    if (0x80 & code) { /* 1バイト文字以外 */
        for (i = 2; i <= 8; i++) {
            code <<= 1;
            if (!(0x80 & code)) {
                break;
            }
            size++;
        }
    }
    return size;
}

実行結果
$ ./substr_utf8
substr_utf8($testStr, 0, 5) = ABCDE
substr_utf8($testStr, 3, 3) = DEF
substr_utf8($testStr, 10, 4) = えおアイ
substr_utf8($testStr, 13, 5) = イウエオ愛

[2324] Posted by kagahiro at 2013/07/02 11:02:48
0 point | Link (3) | Trackback (0) | Comment (0)

Windows 10の無料アップグレードは、予定通り2016年7月29日までで終了し、それ以降にWindows 10にアップグレードする場合は、フルバージョンのWindows 10を買う(Windows 10 Homeへのアップグレードは119ドル)必要が...
[2549] Posted by kagahiro at 2016/05/09 09:54:19
0 point | Link (4) | Trackback (0) | Comment (0)

映画やドラマ、アニメ、音楽、お笑いなどの無料動画をFC2動画、YouTube、ニコニコ動画 、Veoh、Dailymotionなどから探す方法を解説。無料動画を探す方法としては、動画検索サイトで探したい動画に関連する任意のキー...
[2169] Posted by kagahiro at 2012/04/18 21:17:19
5 point | Link (15) | Trackback (5) | Comment (0)

オープンソースの高速・軽量データベース「MySQL」に関する書籍。入門書や運用管理についての詳細な解説書、リファレンスなど。MySQL 徹底入門 第2版オープンソースのデータベース・サーバー、MySQLのインストールか...
[663] Posted by kagahiro at 2006/06/23 06:27:12
0 point | Link (7) | Trackback (0) | Comment (0)

ようつべ(YouTube)の動画をダウンロードしてファイルに保存できるオンラインサービスやソフトウェアの最新情報ClipConverter.ccYouTube瞬速ダウンロードYouTube mp3Freemake Video DownloaderClipConverter.ccようつ...
[1103] Posted by kagahiro at 2007/10/29 03:16:25
1 point | Link (8) | Trackback (1) | Comment (0)

Google News (グーグルニュース)は、Google社が提供しているコンピュータによって生成されるニュースサイトで、世界中の50000以上のニュース提供元の見出しが集約され同じような内容の記事がグループ化され、ユーザ...
[2267] Posted by kagahiro at 2013/02/05 23:35:52
0 point | Link (10) | Trackback (0) | Comment (0)

グーグルプレイとはグーグルプレイの使い方などの情報おすすめAndroidアプリAndroidアプリ開発者向け情報グーグルプレイとはグーグルプレイ (Google Play) は、2012年3月にそれまでのAndroid向けのアプリケーションス...
[2185] Posted by kagahiro at 2012/05/18 11:57:06
5 point | Link (15) | Trackback (0) | Comment (2)

単にテキストファイル等の文字エンコードを変換するのであれば、iconvコマンドを使用して変換すれば良いのですが、プログラム内部で取得した文字列の文字エンコードを変換したい場合もあります。以下のプログラムはL...
[1982] Posted by kagahiro at 2010/07/26 09:54:29
0 point | Link (2) | Trackback (0) | Comment (0)

  1 2 3 4 5  次へ >


アクセスランキング

今日のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (70 PV)
  2. ウェブページを1回だけリロード(再表示)する方法 (5 PV)
  3. [Perl]UTF-8でエンコードされた英数字の全角半角変換を行うコード (4 PV)
  4. MySQL [書籍] (3 PV)
  5. [C言語]UTF-8でエンコードされた文字列の部分文字列を取り出すコード (3 PV)
  6. FC2動画やYouTubeなどから無料動画(映画やドラマ、アニメ、音楽など)を探す方法 (3 PV)
  7. Windows 10の無料アップグレードは2016年7月29日まで、「延長は絶対にない」 (3 PV)
  8. YouTubeドラマまとめ ドラマ・映画 -VideoNavi- (1 PV)
  9. Google マップ(グーグルマップ)日本版 (1 PV)
  10. [gcc]iconvで文字エンコードを変換するサンプルプログラム (1 PV)

今月のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (1934 PV)
  2. ウェブページを1回だけリロード(再表示)する方法 (122 PV)
  3. [C言語]UTF-8でエンコードされた文字列の部分文字列を取り出すコード (107 PV)
  4. Windows 10の無料アップグレードは2016年7月29日まで、「延長は絶対にない」 (96 PV)
  5. FC2動画やYouTubeなどから無料動画(映画やドラマ、アニメ、音楽など)を探す方法 (82 PV)
  6. MySQL [書籍] (70 PV)
  7. ようつべ (YouTube) 動画のダウンロードと保存 (42 PV)
  8. Google News (グーグルニュース)日本版 (39 PV)
  9. グーグルプレイ (Google Play) - Androidアプリ、ゲーム、映画、音楽、書籍 (34 PV)
  10. [gcc]iconvで文字エンコードを変換するサンプルプログラム (32 PV)

アクセス統計

ディレクトリ

関連サイト