[先頭]の検索結果


SQLiteのSELECT文でn件目~m件目までのデータを取得する場合も、上位n件の場合と同様にLIMIT句を使用しますが、開始位置の指定が必要になります。データは開始位置で指定した値の次のレコードから取得されます。


構文:
SELECT カラム名, ... FROM テーブル名 LIMIT 開始位置, 行数;

または

SELECT カラム名, ... FROM テーブル名 LIMIT 行数 OFFSET 開始位置;

例えば、ordernum, product, price, quantityの4つのカラムを持つsalesテーブルに10件のレコードが存在していて、priceの値が小さい順に3件目から7件目まで5件のレコードを取得する場合のSELECT文は以下のようになります。

SELECT * FROM sales ORDER BY price LIMIT 2, 5;

または

SELECT * FROM sales ORDER BY price LIMIT 5 OFFSET 2;

このSELECT文を実行すると先頭から2件のレコードは取得されずに、3件目から7件目までの5件分のレコードが取得されます。

LIMIT句を使用しない場合の実行結果:

ordernum, product, price, quantity
3, WII, 4500, 1
5, PS3, 10000, 3
8, G-SHOCK, 12000, 8
9, EXILIM, 14000, 7
1, PS4, 20000, 1
6, COOLPIX, 23000, 1
7, amazon fire, 25000, 6
10, GoPro, 27000, 3
4, iPhone SE, 50000, 4
2, iPhone 6, 1000000, 2

LIMIT句に「LIMIT 5 OFFSET 2」を指定した場合の実行結果:

ordernum, product, price, quantity
8, G-SHOCK, 12000, 8
9, EXILIM, 14000, 7
1, PS4, 20000, 1
6, COOLPIX, 23000, 1
7, amazon fire, 25000, 6

SQL ゼロからはじめるデータベース操作
翔泳社


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

[2543] Posted by kagahiro at 2016/04/30 17:11:59
0 point | Link (3) | Trackback (0) | Comment (0)

SQLiteでは、AccessやMicrosoft SQL ServerのようにTOP句を使用して上位n件のデータを取得することはできません。SQLiteのSELECT文で上位n件のデータを取得する場合はLIMIT句を使用します。


構文:
SELECT カラム名, ... FROM テーブル名 LIMIT 行数;

例えば、ordernum, product, price, quantityの4つのカラムを持つsalesテーブルに10件のレコードが存在していて、priceの値が小さい順に3件取得する場合のSELECT文は以下のようになります。

SELECT * FROM sales ORDER BY price LIMIT 3;


LIMIT句を使用しない場合の実行結果:

ordernum, product, price, quantity
3, WII, 4500, 1
5, PS3, 10000, 3
8, G-SHOCK, 12000, 8
9, EXILIM, 14000, 7
1, PS4, 20000, 1
6, COOLPIX, 23000, 1
7, amazon fire, 25000, 6
10, GoPro, 27000, 3
4, iPhone SE, 50000, 4
2, iPhone 6, 1000000, 2

LIMIT句に3を指定した場合の実行結果:

ordernum, product, price, quantity
3, WII, 4500, 1
5, PS3, 10000, 3
8, G-SHOCK, 12000, 8

SQLite ポケットリファレンス
技術評論社 著者:五十嵐 貴之


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

[2542] Posted by kagahiro at 2016/04/30 16:43:14
1 point | Link (3) | Trackback (1) | Comment (0)

まずカタカナより比較的プログラミングしやすそうな英数字の全角半角変換から作成します。

半角から全角への変換の処理手順は、

・半角英数字の場合は、同じ全角英数字に置き換えて戻り値として返す文字列に連結
・それ以外の文字の場合はそのまま戻り値として返す文字列に連結

また、全角から半角への変換の処理手順は、

・全角英数字の場合は、同じ半角英数字に置き換えて戻り値として返す文字列に連結
・それ以外の文字の場合はそのまま戻り値として返す文字列に連結

となります。

文字コードはそれぞれ以下の通りですので、これらに該当する文字があったら置き換えを行います。

半角数字:0 - 9
30 - 39

全角数字:0 - 9
EFBC90 - EFBC99
2バイト目まではEFBC

半角アルファベット大文字:A - Z
41 - 5A

全角アルファベット大文字:A - Z
EFBCA1 - EFBCBA
2バイト目まではEFBC

半角アルファベット小文字:a - z
61 - 7A

全角アルファベット小文字:a - z
EFBD80 - EFBD9A
2バイト目まではEFBD

以下が英数字の半角から全角へ、全角から半角への変換を行うコード(プログラム)です。

#!/usr/bin/perl

use strict;
use warnings;
use Encode;

my $hanAlnum = "ABCDEい12345あabcde";
my $zenAlnum = "ABCDEい12345あabcdeカ";

my $zenstr = han2zen_alnum($hanAlnum);
Encode::from_to($hanAlnum, 'utf8', 'cp932');
Encode::from_to($zenstr, 'utf8', 'cp932');
print "$hanAlnum ---> $zenstr\n";

my $hanstr = zen2han_alnum($zenAlnum);
Encode::from_to($zenAlnum, 'utf8', 'cp932');
Encode::from_to($hanstr, 'utf8', 'cp932');
print "$zenAlnum ---> $hanstr\n";

# UTF-8でエンコードされた半角英数字を全角英数字に変換する
sub han2zen_alnum {
    my ($src) = @_;

    my $srclen = length($src);
    my $pos = 0;
    my $dest = '';
    while ($pos < $srclen) {
        my $code = ord substr($src, $pos, 1); # 先頭のASCIIコード値を取得
        my $bytelen = _bytesize($code);

        my $lastbyte = 0;
        my $bytechar = '';
        my $flagged_utf8 = ''; 
        if ($code >= 0x30 && $code <= 0x39) { # 数字
            $lastbyte = 0x90 + ($code - 0x30);
            $bytechar = pack("C3", 0xEF, 0xBC, $lastbyte);
            $dest .= $bytechar;
        }
        elsif ($code >= 0x41 && $code <= 0x5A) { # 大文字英字
            $lastbyte = 0xA1 + ($code - 0x41);
            $bytechar = pack("C3", 0xEF, 0xBC, $lastbyte);
            $dest .= $bytechar;
        
        }
        elsif ($code >= 0x61 && $code <= 0x7A) { # 小文字英字
            $lastbyte = 0x81 + ($code - 0x61);
            $bytechar = pack("C3", 0xEF, 0xBD, $lastbyte);
            $dest .= $bytechar;
        }
        else {
            $dest .= substr($src, $pos, $bytelen);
        }
        $pos += $bytelen;
    }

    return $dest;
}

# UTF-8でエンコードされた全角英数字を半角英数字に変換する
sub zen2han_alnum {
    my ($src) = @_;

    my $srclen = length($src);
    my $pos = 0;
    my $dest = '';

    while ($pos < $srclen) {
        my $code = ord substr($src, $pos, 1); # 先頭のASCIIコード値を取得
        my $bytelen = _bytesize($code);
        my $hit = 0;
        if ($code == 0xEF) { # 全角英数の場合は1バイト目がEF
            my $code2 = ord substr($src, $pos + 1, 1);  # 2バイト目
            my $code3 = ord substr($src, $pos + 2, 1);  # 3バイト目
            if ($code2 == 0xBC) {
                if ($code3 >= 0x90 && $code3 <= 0x99) {
                    $dest .= chr(0x30 + ($code3 - 0x90));
                    $hit = 1;
                }
                elsif ($code3 >= 0xA1 && $code3 <= 0xBA) {
                    $dest .= chr(0x41 + ($code3 - 0xA1));
                    $hit = 1;
                }
            }
            elsif ($code2 == 0xBD) {
                if ($code3 >= 0x80 && $code3 <= 0x9A) {
                    $dest .= chr(0x61 + ($code3 - 0x80));
                    $hit = 1;
                }
            }
        }
        if(!$hit) {
            $dest .= substr($src, $pos, $bytelen);
        }
        $pos += $bytelen;
    }

    return $dest;
}

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

[2250] Posted by kagahiro at 2012/12/19 16:54:42
0 point | Link (1) | Trackback (0) | Comment (0)

Unicodeの文字コード表によるとUTF-8の半角英数、全角英数、半角カナ、全角カナの文字コードは以下のようになるようです。英数字の場合は半角と全角の文字がそれぞれ対応していますが、カタカナの場合は半角と全角で...
[2248] Posted by kagahiro at 2012/12/17 00:25:00
0 point | Link (1) | Trackback (0) | Comment (0)

Perlのsubstr関数ではバイト単位の操作になるので、漢字、ひらがな、カタカナなどの全角文字を文字数で指定して部分文字列を取り出すことができません。それでは不都合なことも多いので、半角英数も全角文字も1文字と...
[2244] Posted by kagahiro at 2012/12/13 10:51:25
0 point | Link (4) | Trackback (0) | Comment (0)

Perlのlength関数ではバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。ブログなどのアプリケーションのテキスト処理ではそれでは不都合な場合も...
[2243] Posted by kagahiro at 2012/12/12 11:56:21
1 point | Link (3) | Trackback (0) | Comment (1)

Perlの関数を使用して、以下の手順で10進数を2進文字列に変換することができます。sprintf関数で10進数を16進文字列に変換pack関数で16進文字列をバイナリーにパックunpack関数で2進文字列に変換例えば、文字列の先頭...
[2239] Posted by kagahiro at 2012/12/09 20:36:29
0 point | Link (4) | Trackback (0) | Comment (0)

メールフォームPHP版を追加しました。スクリプト先頭の以下の「YourEmail」の部分に送信先のメールアドレスを設定すると、フォームで入力された内容がそのメールアドレスに送信されます。<?PHP$to = 'YourEmail...
[2013] Posted by kagahiro at 2010/09/01 22:59:37
0 point | Link (1) | Trackback (0) | Comment (0)

まず、今回のクイズしりとりに勝つため私が考えた作戦は、相手(コンピュータ)に、先頭に使用されているより末尾に使用されている数が多いアルファベットの単語から選ばせるようにすれば、そのうち相手が手詰まり...
[2003] Posted by kagahiro at 2010/08/23 17:18:13
0 point | Link (1) | Trackback (0) | Comment (0)

掲示板CGIは、ホームページに簡易掲示板を設置するためのシンプルな無料のPerlスクリプト(CGI)です。新規スレッドやコメントの投稿は誰でも可能ですが、スレッドやコメントの削除は管理者のみ可能(管理者パスワー...
[1899] Posted by kagahiro at 2010/06/02 00:14:56
0 point | Link (5) | Trackback (0) | Comment (0)

  1 2  次へ >


アクセスランキング

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

  1. Million Dollar(MT4)リアルフォワード(myfxbook) #Gold(XAUUSD) #ナンピンマーチン (13 PV)
  2. 完全無料のMT5用ナンピンEA「Nanpin K(ナンピンケイ) MT5」 (12 PV)
  3. 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (9 PV)
  4. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (9 PV)
  5. 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(EA)「PositionKeeper MT5」 #FX (8 PV)
  6. 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (4 PV)
  7. Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (3 PV)
  8. [FX]高値更新・安値更新でエントリー、MT4向け無料スキャルピングEA「1Scalper」#システムトレード (3 PV)
  9. DECOLOG(デコログ) (3 PV)
  10. MT5用レンジ相場向け逆張りナンピンEA「Nanpin K(ナンピンケイ) MT5」を完全無料で公開 (2 PV)

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

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (1528 PV)
  2. 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (238 PV)
  3. Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (217 PV)
  4. MT4向けオープンソースナンピンマーチンEA「Automaton」 (129 PV)
  5. 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (125 PV)
  6. 完全無料のMT5用ナンピンEA「Nanpin K(ナンピンケイ) MT5」 (121 PV)
  7. [FX]高値更新・安値更新でエントリー、MT4向け無料スキャルピングEA「1Scalper」#システムトレード (120 PV)
  8. MT4向け1ポジアノマリーEA「DAY TRADING」オープンソースライセンス(GPL3)で公開 #ドル円 (115 PV)
  9. 完全無料のMT4向けナンピンEA「Nanpin K(ナンピンケイ)」 (98 PV)
  10. SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (88 PV)

アクセス統計

ディレクトリ

関連サイト