[rank:t]の検索結果



「先頭から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 (18) | Trackback (1) | Comment (4)

Perlのlength関数ではバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。

ブログなどのアプリケーションのテキスト処理ではそれでは不都合な場合もことも多いので、半角英数も全角文字(漢字、ひらがな、カタカナなど) も1文字としてカウントする関数を作成することにします。

UTF-8では、

1バイト目の先頭ビットが0の場合は1バイト文字
1バイト目の先頭から3ビットが110の場合は2バイト文字
1バイト目の先頭から4ビットが1110の場合は3バイト文字
1バイト目の先頭から5ビットが11110の場合は4バイト文字
1バイト目の先頭から6ビットが111110の場合は5バイト文字
1バイト目の先頭から7ビットが1111110の場合は2バイト文字

という仕様ですので、1バイト目のビットの状態を調べることによって、その文字が何バイトかを調べることができます。

以下のコードでは、この仕様にもとづいて全角文字を含む文字列の文字数を取得しています。

#!/usr/bin/perl

use strict;
use warnings;

my $testAscii = "ABCDEFG";
my $testHira  = "あいうえお";
my $testKata  = "アイウエ";
my $testKanji = "愛々木";
my $testAll = "ABCDEFGあいうえおアイウエオ愛夢佐々木";

print "length($testAscii) = ".length($testAscii), "\n";
print "strlen_utf8($testAscii) = ".strlen_utf8($testAscii), "\n";

print "length($testHira) = ".length($testHira), "\n";
print "strlen_utf8($testHira) = ".strlen_utf8($testHira), "\n";

print "length($testKata) = ".length($testKata), "\n";
print "strlen_utf8($testKata) = ".strlen_utf8($testKata), "\n";

print "length($testKanji) = ".length($testKanji), "\n";
print "strlen_utf8($testKanji) = ".strlen_utf8($testKanji), "\n";

print "length($testAll) = ".length($testAll), "\n";
print "strlen_utf8($testAll) = ".strlen_utf8($testAll), "\n";

exit;

# UTF-8でエンコードされた文字列の文字数を取得する。
sub strlen_utf8 {
    my ($text) = @_;

    my $textlen = length($text);
    my $pos = 0;
    my $count = 0;

    while ($pos < $textlen) {
        my $code = ord substr($text, $pos, 1); # 先頭のASCIIコード値を取得
        my $bytelen = _bytesize($code);
        $pos += $bytelen;
        $count++; # 文字数をカウント
    }

    return $count;
}

# 文字のバイト長を求める
sub _bytesize {
    my ($code) = @_;
    my $size = 1;
    if (0x80 & $code) { # 1バイト文字以外
        $size++;
        $code <<= 1;
        for my $i (2 .. 8) {
            last if (!(0x80 & $code));
            $size++;
            $code <<= 1;
        }
    }
    return $size;
}

strlen_utf8関数では、substr関数を使用して1バイト目のASCIIコード値を取得し、 _bytesize関数を呼び出して文字のバイト数を求め、1文字分の処理を行うたびに文字数をカウントアップしています。

_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定し 戻り値として返しています。

ゼロからわかる Perl言語超入門
技術評論社 著者:高橋 順子


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

[2243] Posted by kagahiro at 2012/12/12 11:56:21
1 point | Link (3) | Trackback (0) | Comment (1)

将棋ユーチューバーとして有名なクロノさんが、将棋ウォーズの「棋神(ノーマル)」と市販将棋ソフト「将棋神やねうら王」のQhapaq(カッパ)を対局させた動画を配信したことに対し、「ソフト指しを助長する」として将棋ウォーズの運営から、アカウント停止の警告を受けたことを自身のライブ配信で明らかにした。

まあ、公式のソフト指し機能である「棋神」を提供している将棋ウォーズの運営から「ソフト指しを助長する」と言われても、棋神を使わないユーザーから見れば棋神の他のソフト指しも全然変わらないので「お前が言うかw」といった感じなのだが、将棋ウォーズの対局動画を中心にYouTube配信しているクロノさんにとってはかなり衝撃的な出来事だったようで、「事件」を告白したライブ動画では動揺を隠しきれない様子が伺える。

とりあえず、今回はアカBANは免れたようなので、ユーチューバーとしての活動に支障はないようだが、今後は将棋ソフトの利用には慎重にならざるを得ないだろう。


将棋実況チャンネル【クロノ】

正体不明のアマ棋士「クロノ」さんが配信している将棋実況チャンネルとしては最大のチャンネル登録者を有する人気YouTubeチャンネル。多数の対局実況動画や棋譜解説動画、ライブ配信などを行っている。配信者のクロノさんの棋力は将棋クラフ四段、将棋ウォーズ三段。

[2949] Posted by kagahiro at 2018/09/27 12:42:08
2 point | Link (4) | Trackback (0) | Comment (2)

初心者でも勝てるFX最強ツールと言って、半年で54万円(税込み)の高額インジ(川ツール)のライブ配信を行い話題になっているFXYouTubeチャンネル。ツール自体はちゃんと提供されるようなので、詐欺とは言えないよ...
[3049] Posted by kagahiro at 2019/04/13 13:18:56
22 point | Link (11) | Trackback (0) | Comment (13)

佐藤天彦名人がNHK杯準決勝の永瀬拓矢六段との対局で採用して快勝したことで注目を集めている戦法「角換わり4五桂速攻(△6五桂速攻)」。三浦弘行九段がソフト不正を疑われたA級順位戦の渡辺明竜王との対局でも...
[2631] Posted by kagahiro at 2017/03/21 10:39:50
1 point | Link (4) | Trackback (0) | Comment (1)

これまで英語版が表示されていたGoogle Finance(グーグルファイナンス)のURL(http://www.Google.com/finance)で日本版が表示されるようになってますが、英語版はどうやったら見れるのでしょうか?いろいろやって...
[2863] Posted by kagahiro at 2017/11/30 22:36:35
5 point | Link (3) | Trackback (0) | Comment (2)

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

チャンネル登録者数が7000人を超え将棋系ユーチューバーのショウヤンさんが、将棋ウォーズで規約違反の「ソフト指し」をしたことを、自身の配信するユーチューブチャンネルの動画で告白し、将棋ファンの間に衝撃が広...
[2904] Posted by kagahiro at 2018/04/06 09:52:48
13 point | Link (5) | Trackback (0) | Comment (10)

FC2, Inc.運営の携帯での再生・投稿にも対応した無料動画共有サイト「FC2動画」FC2動画とはFC2動画公式FC2動画アプリFC2動画の使い方FC2動画のまとめFC2動画のダウンロードFC2動画とはFC2動画は、FC2, Inc.が運営して...
[2170] Posted by kagahiro at 2012/04/19 02:51:29
0 point | Link (15) | Trackback (0) | Comment (0)

PositionKeeperは、裁量トレードをサポートするMT4向け無料ツール(EA)です。裁量トレードで建てたポジションを自動的にトレールトレール機能)したり、エントリーから一定時間経過したポジションを、一定の利幅(...
[3056] Posted by kagahiro at 2019/05/19 16:40:02
0 point | Link (10) | Trackback (0) | Comment (0)

  1 2 3  次へ >


アクセスランキング

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

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (12 PV)
  2. [Perl]UTF-8でエンコードされた文字列の文字数を取得するコード (10 PV)
  3. [将棋]ユーチューバーのクロノさんが将棋ウォーズ運営からアカウント停止の警告を受ける #ソフト指し #複垢 #アカBAN (9 PV)
  4. FX最強ツール「Infinity(川ツールを使った高額インジ)」販売で話題のFX系YouTubeチャンネル #詐欺とは言えないようだが (8 PV)
  5. [将棋]角換わり▲4五桂速攻(△6五桂速攻) #佐藤天彦名人 #三浦弘行九段 (7 PV)
  6. Google Finance(グーグルファイナンス)日本版が表示されるようになってますが・・・ (6 PV)
  7. Google News (グーグルニュース)日本版 (6 PV)
  8. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (4 PV)
  9. FC2動画 - 映画、ドラマ、アニメなどが無料で見られる動画共有サイト (3 PV)
  10. [FX]「PositionKeeper」裁量ポジションのトレールや時間決済ができるMT4向け無料ツール(EA) (3 PV)

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

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (1655 PV)
  2. FX最強ツール「Infinity(川ツールを使った高額インジ)」販売で話題のFX系YouTubeチャンネル #詐欺とは言えないようだが (361 PV)
  3. Google News (グーグルニュース)日本版 (257 PV)
  4. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (131 PV)
  5. Google Finance(グーグルファイナンス)日本版が表示されるようになってますが・・・ (129 PV)
  6. [将棋]角換わり▲4五桂速攻(△6五桂速攻) #佐藤天彦名人 #三浦弘行九段 (109 PV)
  7. ウェブページを1回だけリロード(再表示)する方法 (104 PV)
  8. [Perl]UTF-8でエンコードされた文字列の文字数を取得するコード (99 PV)
  9. 最新のGoogle News(グーグルニュース)日本版のRSSが取得できるURL (87 PV)
  10. [将棋]将棋メイド「押木ゆい」さん考案の新戦法「メイドシステム」が大人気 #将棋ウォーズ初段 (78 PV)

アクセス統計

ディレクトリ

関連サイト