[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 (17) | Trackback (1) | Comment (4)

チャンネル登録者数が7000人を超え将棋系ユーチューバーのショウヤンさんが、 将棋ウォーズで規約違反の「ソフト指し」をしたことを、自身の配信するユーチューブチャンネルの動画で告白し、将棋ファンの間に衝撃が広がっている。

ショウヤンさんは、謝罪動画の中で将棋ウォーズの対局で降段に焦って数局ソフト指しを行ったが、元奨励会の強豪を倒して準優勝したことで疑惑を持たれていたテトリスさん主催の将棋大会では、ソフト指しはしていないと否定している。

けじめをつけるため将棋ウォーズのアカウントは削除し当面活動を休止するということだが、YouTubeの動画は削除しないようなのでいづれ活動は再開するのだろう。

ショウヤンさんのソフト指し謝罪動画


将棋系ユーチューバートップのクロノさんがアンチに叩かれる

ショウヤンさんがソフト指しを自白したことで、直前まで「ショウヤンさんがソフト指しをするわけがないと擁護していたクロノさんが、 コメントなどで人格を否定されるなどの被害に合っているようだ。

クロノさん自身にはなんら非がない今回の件ですら叩かれるとなると、子供に人気のユーチューバーという職業もいろいろ大変だということか。

将棋のソフト指しとは

ネット対局などの将棋対局で将棋ソフトを使用して指すことで、人工知能を利用した将棋ソフトの棋力が近年飛躍的に向上したことで、トップレベルのプロ棋士でもソフトはほとんど勝てなくなっており、「ソフト指し」をすることでほとんどの対局で勝つことができる。

プロ棋士やアマチュア棋士の対局ではもちろん、ネット対局でも規約違反とされ、「ソフト指し」と認定された場合はアカウント停止となるが、日本将棋連盟公認の人気対局アプリ「将棋ウォーズ」では運営が「棋神」という「ソフト指し」機能を有料で提供している。

[2904] Posted by kagahiro at 2018/04/06 09:52:48
4 point | Link (1) | Trackback (0) | 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)

2017年6月の更新で従来の方法ではGoogle News(グーグルニュース)のRSSを取得することができなくなっていましたが、ようやく最新のGoogle News(グーグルニュース)でRSSを取得する方法がわかりました。日本版では表...
[2852] Posted by kagahiro at 2017/11/26 13:46:19
0 point | Link (4) | Trackback (0) | Comment (0)

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

グーグルニュース(Google News)日本版が見れないGoogleのニュースサイト「グーグルニュース(Google News)」がシステム更新されたことで、以前日本版を見ることができていた一部のURLで下記のように表示され見れな...
[2790] Posted by kagahiro at 2017/06/28 09:46:36
4 point | Link (6) | Trackback (0) | Comment (4)

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

藤井聡太四段の27連勝がかかった対局の棋譜の解説をライブ配信していた将棋実況ユーチューバーのクロノさんが、朝日新聞将からTwitterで「棋譜中継は権利の侵害に当たる」というツイートを受けて、配信中止に追い込ま...
[2779] Posted by kagahiro at 2017/06/18 10:33:09
8 point | Link (7) | Trackback (0) | Comment (8)

Google Finance(グーグルファイナンス)とはGoogle Finance(グーグルファイナンス)は、株価情報、金融ニュース(Google Newsと連動)、為替レートなどの投資関連情報が掲載されているサイトで、ダウ平均、S&P 500...
[2435] Posted by kagahiro at 2014/11/20 10:43:37
0 point | Link (8) | Trackback (0) | Comment (0)

動画共有サイト「YouTube」で将棋の対局実況や棋譜、手筋、詰将棋の解説、ライブ配信などを行っているおすすめの将棋系ユーチューバー(YouTuber)のチャンネル。将棋実況チャンネル【クロノ】将棋ユーチューバーと...
[2785] Posted by kagahiro at 2017/06/23 17:04:33
0 point | Link (4) | Trackback (0) | Comment (0)

  1 2 3  次へ >


アクセスランキング

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

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (39 PV)
  2. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (7 PV)
  3. [Perl]UTF-8でエンコードされた文字列の文字数を取得するコード (5 PV)
  4. 最新のGoogle News(グーグルニュース)日本版のRSSが取得できるURL (5 PV)
  5. Google News (グーグルニュース)日本版 (5 PV)
  6. グーグルニュース(Google News)日本版が表示できるURL (4 PV)
  7. [将棋]角換わり▲4五桂速攻(△6五桂速攻) #佐藤天彦名人 #三浦弘行九段 (4 PV)
  8. [将棋]将棋実況ユーチューバーのクロノさんが朝日新聞のクレームで棋譜中継を配信中止 (3 PV)
  9. Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (2 PV)
  10. [将棋]動画配信やライブ配信を行っているおすすめの将棋系ユーチューバー(YouTuber)チャンネル (2 PV)

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

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (2485 PV)
  2. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (775 PV)
  3. [将棋]将棋実況ユーチューバーのクロノさんが朝日新聞のクレームで棋譜中継を配信中止 (221 PV)
  4. [将棋]角換わり▲4五桂速攻(△6五桂速攻) #佐藤天彦名人 #三浦弘行九段 (213 PV)
  5. USTREAM(ユーストリーム) 日本語版 無料のライブ映像配信サービス (174 PV)
  6. Tumblr(タンブラー)のダッシュボードからおすすめ投稿を消す(非表示にする)方法 (170 PV)
  7. [Perl]UTF-8でエンコードされた文字列の文字数を取得するコード (169 PV)
  8. ウェブページを1回だけリロード(再表示)する方法 (164 PV)
  9. Google Finance(グーグルファイナンス)日本版が表示されるようになってますが・・・ (144 PV)
  10. 最新のGoogle News(グーグルニュース)日本版のRSSが取得できるURL (135 PV)

アクセス統計

ディレクトリ

関連サイト