[先頭]の検索結果


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)

削除されました
[1899] Posted by kagahiro at 2010/06/02 00:14:56
0 point | Link (0) | Trackback (0) | Comment (0)

  1 2  次へ >


アクセスランキング

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

  1. Twitter Lite - 起動時や利用時の読み込み速度が最大30%アップ (3 PV)
  2. 2ちゃんねる(2ch) (3 PV)
  3. 大人気のブランド品即時買取サービス「CASH」がDMM.comにたったの70億円で買い叩かれる (2 PV)
  4. FC2まとめ (2 PV)
  5. 中国で「テンセント」のAIが中国共産党を「腐敗して無能」と批判し粛清される #人口知能 (2 PV)
  6. ほしい物リスト (2 PV)
  7. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (2 PV)
  8. 掲示板CGI ThreadPlus 1.2 のリリース (2 PV)
  9. 暇つぶしのコンテンツで有料化は無理ではないかと (2 PV)
  10. 切込隊長(きりこみたいちょう) (2 PV)

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

  1. FC2まとめ (10 PV)
  2. 将棋ウォーズPCブラウザ版がchrome、Firefox、edgeなどに対応 (8 PV)
  3. 掲示板CGI ThreadPlus 1.2 のリリース (5 PV)
  4. 「Kindle for the Web」 (5 PV)
  5. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (5 PV)
  6. Jipanguの配布は終了しました (4 PV)
  7. [FX]裁量ポジションを簡単に管理できるMT4向け無料の裁量補助EA「PositionKeeper」 (4 PV)
  8. Twitter Lite - 起動時や利用時の読み込み速度が最大30%アップ (3 PV)
  9. 「さくらのクラウド」のオプションサービスで「専有ホスト」の提供を開始 (3 PV)
  10. ドル円(USDJPY)で爆益を狙うハイリスクハイリターンのMT4向けナンピンマーチンEA「Hyper Dollar」 (3 PV)

アクセス統計

ディレクトリ

関連サイト