SQLite 9

このエントリーをはてなブックマークに追加
873NAME IS NULL
ある整数型のカラムnumがあって、
その内容が、100以下の素数であるレコードだけ抜き出すために
SQLを簡潔に書く方法はありますでしょうか

where num=2 or num=3 or num=5 (略) num=89 or num=97
と書いてもいいんですが、
たとえば
where num={2,3,5,7,11,(略),83,89,97}
のようなまとめた書き方があったら教えてください
874NAME IS NULL:2012/07/05(木) 11:20:37.40 ID:???
875NAME IS NULL:2012/07/05(木) 14:28:14.16 ID:???
876NAME IS NULL:2012/07/06(金) 10:55:54.73 ID:sgE42f78
iPhone用アプリとしてXcodeとSQLiteでメニューをデータベースにして、
オーダーエントリーシステムを作ろうと思っているのですが、
SQLiteのデータベースから特定の範囲を指定して呼び出す方法がありましたら
ご教授頂きたくお願い申し上げます。

具体的にはカテゴリーとして「パスタ」「サラダ」「ドリンク」等があり、
テーブルビューのリンクを、それぞれの名称にした上で、
そのカテゴリーの範囲内のみをリンクで表示する場合です。
877NAME IS NULL:2012/07/06(金) 13:05:39.37 ID:???
>>876
select * from メニュー where カテゴリー = 'パスタ';
とか。SQL 勉強しなよ。
878876:2012/07/06(金) 15:07:15.87 ID:sgE42f78
>>877
早速ありがとうございます。


-(void)readWordFromDatabase {
db = [FMDatabase databaseWithPath:databasePath];
aryDatabase = [[NSMutableArray alloc] init];
[db setLogsErrors:TRUE];
[db setTraceExecution:TRUE];
if (![db open]) {
NSLog(@"Failed to open database");
return;
}
else {
NSLog(@"Openned database successfuly");
}
FMResultSet *rs = [db executeQuery:@"SELECT DISTINCT * FROM menu"];
while ([rs next]) {
//int aID = [rs intForColumn:@"id"];
int aPk = [rs intForColumn:@"pk"];
int aCategory = [rs intForColumn:@"category"];
int aPrice = [rs intForColumn:@"price"];
//int aCt = [rs intForColumn:@"category"];
NSString *aCtname = [rs stringForColumn:@"ctname"];
NSString *aName = [rs stringForColumn:@"name"];
singleStudent *sStudent = [[singleStudent alloc] initWithData:aPk :/*aID :aCt*/aCategory :aPrice :aCtname :aName];
[aryDatabase addObject:sStudent];
[sStudent release];
}
[db close];
}

今、現状がこうなっていのですが、イメージとしては、テーブルビューのメニューで、
データベースはひとつのファイルのまま、パスタ、サラダ、ドリン等のカテゴリーから
パスタを選ぶと、ペペロンチーノ、カルボナーラ、アンチョビとキャベツのパスタ
といった様に、各商品が選べる様にしたいのですが、現状で、パスタのメニューの数だけ、
パスタ、パスタ、パスタ、パスタ、パスタ、パスタ、パスタ、と表示されてしまうので、
カテゴリー毎にまとめられないかと思っていたのですが、可能でしょうか?
879NAME IS NULL:2012/07/06(金) 21:33:02.00 ID:???
なんじゃこの質問の仕方

どこをポイントにしたいんだ?
クエリか?
テーブル構造か?
それともコードか?
最低でも現状のテーブル構造とか出せる情報は出してよ

普通はカテゴリマスタとメニュー商品マスタ作って結合するだろ
880NAME IS NULL:2012/07/06(金) 21:35:30.37 ID:???
何をしていいか分かっていないんだろうねw
881NAME IS NULL:2012/07/06(金) 21:48:27.01 ID:???
>>873-874
where とか in 句の数とかって上限なかったっけ?

100 までの素数ぐらいだったら大丈夫かな。

もっと大きいところまでやるなら、素数テーブルを用意して

select テーブル.* from 素数テーブル left join テーブル on 素数テーブル.素数 = テーブル.num;

とかかな。
882NAME IS NULL:2012/07/06(金) 23:31:15.02 ID:???
sqliteLimit.h
# define SQLITE_MAX_SQL_LENGTH 1000000000
# define SQLITE_MAX_EXPR_DEPTH 1000

$ for i in {1..1000}; do stmt="${stmt} OR id = ${i}"; done
$ echo -n "SELECT name FROM people WHERE id = 0 ${stmt};" | sqlite3 entry.sqlite3
Error: Expression tree is too large (maximum depth 1000)

883881:2012/07/07(土) 05:38:53.25 ID:???
>>881
ぼけてるな > 俺
left じゃなくて、inner だった。

>>882
なるほど、1000 もあれば大抵大丈夫か。
884NAME IS NULL:2012/07/07(土) 07:18:02.18 ID:???
>>878
あーわかった
メニューにはカテゴリ名が直接入ってて、それでグルーピングしたいってことね。

select カテゴリ from メニュー group by カテゴリ

アプリでもSQLでも出来るだろうけどカテゴリごとに件数数えるとかじゃなければ、
普通はカテゴリだけならカテゴリだけのテーブルから名前を持ってくる。
メニューのテーブルにはカテゴリの名は直接入れちゃダメ
そういうテーブル構成になってないんならそう作り直したほうが良い。
どうせ宿題でしょ?正規化とか結合でググるんだ

メニューテーブルmenu(メニューに関する属性のみ)
menu_id menu_name price menu_desc cat_id

カテゴリテーブルcategory(カテゴリに関する属性のみ)
cat_id cat_name

メニューを出す時にカテゴリ名も引っ張ってきたい時は結合を使う
select
menu_name,
cat_name
from
menu m left join category c
on m.cat_id = c.cat_id
where
price <= 2000
とか。俺だったらクエリで出来ることはなるべくクエリでやる。
885NAME IS NULL:2012/07/08(日) 00:28:32.91 ID:O1K9KaSi
DATETIME型のレコードを使っていて、それを日別にカウントしたいとき
  GROUP BY date(ctime)
とすると、EXPLAINで見るとインデックスが使われずに full scan となってしまうのですが
良い方法ないでしょうか
886NAME IS NULL:2012/07/08(日) 03:05:44.63 ID:???
どう考えてもフルスキャンが一番早いだろ
887NAME IS NULL:2012/07/08(日) 07:07:42.87 ID:???
>>885
基準日からの日数列を作って、それで group by するとか。
888NAME IS NULL:2012/07/08(日) 15:40:31.69 ID:???
MySQLだとちゃんとインデックス使ってくれるので、クエリプランナが弱いのかな
非正規化するしかないっすかねぇ
889NAME IS NULL:2012/07/08(日) 21:11:21.78 ID:???
グルーピングの時にカバーリングインデックスが使えるならインデックス見たほうが早い。それだけですむから。
そうでなければ全体に対する必要部分の行数でどっちが早いか変わってくるでしょ。
アーキテクチャの違いもあるので、一概にインデックスさえ見れば早いということは言えんのだ。

890NAME IS NULL:2012/07/11(水) 16:45:44.22 ID:???
autoincrementでつけた主キーをselect以外で取得する方法はありますか
891NAME IS NULL:2012/07/11(水) 16:46:16.33 ID:???
主キーはインデックスが自動的につくられるんですか
892NAME IS NULL:2012/07/11(水) 17:41:31.35 ID:???
>>890
select * from sqlite_sequence;
893NAME IS NULL:2012/07/11(水) 22:27:54.03 ID:???
>>892
要件をよく読め

> select 以外
894NAME IS NULL:2012/07/12(木) 09:53:17.54 ID:ynTShOVI
sqlite3のdbに " を含む内容を登録したいのですが " 以降が登録されません。
sqliteの中身は以下です。
$query = $con->prepare("SELECT * FROM sample WHERE list=?");
$query->execute(array($list));
$listの中身は"を何個か含む200文字程度の内容になります。
895NAME IS NULL:2012/07/12(木) 12:58:27.15 ID:???
array の意味がわからん。
なんで $list 直接指定しないの?
896894:2012/07/12(木) 13:06:39.03 ID:+vrI1x3+
エスケープとかプレースホルダーを使っている場面やクエリーの増減があるため使いまわしていたためです。
特に問題がなかったのでarrayで渡してました。
897NAME IS NULL:2012/07/12(木) 13:22:53.93 ID:???
なんで登録したいのに提示したSQLはselectなんだよw
898NAME IS NULL:2012/07/12(木) 20:12:52.12 ID:???
>>896
>エスケープとかプレースホルダーを使っている場面やクエリーの増減があるため

文脈がよくわからん…
array 外すか array の中身を晒すかどっちかにしてくれ

>>897
ほんとだワロタw
それじゃ " 以降がどうこう以前に行自体登録できるわけないじゃん
899sage:2012/07/13(金) 09:26:52.79 ID:???
仮にarrayの中身が
aaaaaaa"fuga"bbbbbbb
としたら\でエスケープしてもダメなんだっけ?
900NAME IS NULL:2012/07/13(金) 13:23:40.42 ID:???
エスケープすれば問題ないし、プレースホルダ使ってればエスケープする必要もない
901NAME IS NULL:2012/07/13(金) 23:02:48.14 ID:???
>>899
\ 自体も適切にエスケープしないといけないなど面倒だから、
使える環境ならプレースホルダ推奨。
902NAME IS NULL:2012/07/16(月) 01:05:37.73 ID:???
主キーはお気に入りなんですよ。
だい主キー とか言ったりしてな!
903NAME IS NULL:2012/07/16(月) 18:13:28.29 ID:???
かなり酒呑んでるようですがw
904NAME IS NULL:2012/07/17(火) 23:40:19.97 ID:???
ちょいと質問してもいいかい?
905NAME IS NULL:2012/07/17(火) 23:50:24.59 ID:???
何の用途でsqliteを使ってるの?ちょっとした自作プログラム用?
906NAME IS NULL:2012/07/17(火) 23:54:24.33 ID:???
大企業の基幹システムで使っております
907NAME IS NULL:2012/07/18(水) 01:28:08.26 ID:???
業務ではメールサーバのアクセスログ解析のための中間データ置き場として、
プライベートではTwitterの自作botの元データ蓄積場所として、
日々お世話になっております
908NAME IS NULL:2012/07/18(水) 04:17:23.46 ID:???
C# SQLite

80台のパソコンで共有フォルダがあります
そこに1つのSQLiteDBファイルをおいて
80台のクライアントから10秒ごとにselectするのは無謀でしょうか?

データ更新は1日に20回くらいしかないのですが更新されたら即座に通知したいと思っています
909NAME IS NULL:2012/07/18(水) 09:44:44.36 ID:???
テーブル設計、
データ量、
取得クエリ、
実行するマシンのスペックによって
余裕だったり、きつかったりするよ!
910NAME IS NULL:2012/07/18(水) 13:41:49.49 ID:???
共有フォルダって、SQLiteのプログラム自体は各クライアントにあるの?
共有のシステムにもよるが多分破綻するぞ
911NAME IS NULL:2012/07/18(水) 13:50:16.03 ID:???
素直にSQL Server Expressとか使えばいいのに
912NAME IS NULL:2012/07/18(水) 14:36:32.41 ID:???
その規模だとタダでつかえるDBがたくさんあるのにSQLiteに固執する
意味がわからない
913NAME IS NULL:2012/07/18(水) 19:08:47.89 ID:???
>>908
まずは用途と、SQLiteを使わないといけない理由を。

その上で、どうしてもSQLiteを使うなら、せめて各クライアントからは直接DBを叩かずにサーバ側のSQLiteで一括して処理するようにするべき。
80台のクライアントから同じ共有ファイルに同時アクセスし続けないといけない状況は、SQLiteと関係なく設計がまずい気がする。
914NAME IS NULL:2012/07/18(水) 21:22:22.25 ID:???
ポーリングするより、イベントアラータのようなクライアントへの通知機能もったDB使った方がよいと思う。
915908:2012/07/19(木) 01:39:41.71 ID:???
実はSQLServer2008とVisualWebDeveloperで作成したものでデータ管理はしております

私はプログラム歴2年の新米なのですがデータ管理をするにあたって、
いろいろ調べていたらSQLiteを見つけました

インストールなし、ファイル1個、そのくせパワフル?、Androidに標準搭載
パソコンのOSで言ったらLinuxか?? みたいな感じで一目惚れでした

今回、管理するデータは重要な物でもないし量も多くないし
SQLiteを試してみよと思いいろいろ挑戦していた次第でした

多くのアクセスを使いこなすにはそれなりにハードルがあるんですね
でももうちょっと挑戦してみます
916NAME IS NULL:2012/07/19(木) 06:25:46.11 ID:???
現状はWebサーバーがあってその上で走るCGIなりASPが SQL Server 2008 にアクセスするようなシステム構成なんですか?
917908:2012/07/19(木) 12:58:02.39 ID:???
>>916
1台のPCにSQLServer2008とIISをインストールしてそこにクライアントがIEでアクセスしてます
918NAME IS NULL:2012/07/19(木) 15:54:48.74 ID:???
>>917
やろうとしている事を乱暴に言ってしまえば、
複数のSQL Serverインスタンスを用意して
全てのサーバーが一つのデータディレクトリを参照しているようなもの
読み取り専用としてならいいけど今回のケースなら止めて置いた方が…
919NAME IS NULL:2012/07/19(木) 23:51:45.86 ID:???
いやいや
それなら行けるんじゃないか?
walモードが使えるから。
walなら更新は読み込みを阻害しないよ。
取り敢えずやってみて検証結果を教えて欲しいっ。
920NAME IS NULL:2012/07/19(木) 23:54:57.30 ID:???
それならって言うのは現状と同じようにdbへのアクセスを一台のノードか代理する形ね
921NAME IS NULL:2012/07/23(月) 14:22:08.46 ID:???
>>917の構成ならまあできないこともないが
最初の質問とちょっと形態が違うからなあ
922NAME IS NULL:2012/07/26(木) 16:54:14.10 ID:/aBlwIAM
Sqlite3で以下のクエリで検索してます。

SELECT * FROM list WHERE sample=$sample and access=$access and level=$level LIMIT 1

この仲のaccessを曖昧検索に変えたいのですが曖昧検索ではLIKE と % を使用するというのを見ました。
複数条件があるWHEREの後にLIKEをどのようにつければいいのでしょうか?
923NAME IS NULL:2012/07/26(木) 18:03:51.74 ID:D083zD7I
>>922
普通にaccess like $accessではいかんのか
$accessの中身を%文字%にするんだ
924NAME IS NULL:2012/07/26(木) 18:45:20.34 ID:???
WHERE (access LIKE '%foo%' OR access LIKE '%bar%') AND level=なんたら
925NAME IS NULL:2012/08/02(木) 03:34:36.59 ID:???
sqliteのintegerにunsignedを指定したいのですが不可能でしょうか?
926NAME IS NULL:2012/08/02(木) 06:04:37.73 ID:???
制約
927NAME IS NULL:2012/08/05(日) 14:07:07.11 ID:???
python3.2からsqlite3使ってたんだけど
text型のフィールドにYYYY-MM-DD形式の日付をinsertして
selectで取り出したらなぜか4桁になってた
両端にシングルクォーテーションつけ忘れてるだけだった……

sql = "insert into test values (2012-08-05)" #←x selectすると結果が1999になる
sql = "insert into test values ('2012-08-05')" #←o

実際は変数使ってるから解決するまでにすごい悩んだ
928NAME IS NULL:2012/08/05(日) 15:16:01.60 ID:???
prepare使おうぜ
929NAME IS NULL:2012/08/05(日) 20:13:09.11 ID:???
お前の父ちゃんは文字列連結でSQL文を作っちゃいけないということも教えてくれなかったのか?
930NAME IS NULL:2012/08/06(月) 09:05:35.56 ID:???
SQLite ManagerでおもむろにDB設定をクリックしたら
ユーザーバージョンなる項目がありました
SQLiteでそれを変更したり参照する文があるのでしょうか?
バージョンはテーブルを作ってそこで管理していたので
デフォルトでそのようなものが用意されていたなら次からはそれを使おうと思うのですが
931NAME IS NULL:2012/08/06(月) 11:02:30.60 ID:???
http://www.sqlite.org/pragma.html
の中の記述

PRAGMA user_version;
PRAGMA user_version = integer ;

で参照と設定ができるそうです
932NAME IS NULL:2012/08/07(火) 00:05:53.41 ID:???
へ〜っ、こんな機能あるんだ。

通りすがりだけど、勉強になった、サンクス。
933NAME IS NULL:2012/08/09(木) 20:46:09.61 ID:???
sqliteでtext型の漢字ソートってやっぱ厳しいですか?
普通にorder byしても思った通りにならず・・・
934NAME IS NULL:2012/08/09(木) 20:58:42.52 ID:???
そもそも君が思っている漢字ソートってどんなのよ。

まさかと思うが、読みの順とかいいだすんじゃ…
935NAME IS NULL:2012/08/09(木) 21:00:00.50 ID:???
>>933
どのDBMSでも漢字ソートには無理がある
936NAME IS NULL:2012/08/09(木) 21:04:08.40 ID:???
そのとおりです読みの順番です
やっぱ膨大な辞書DBでもないと無理ですよね
なんか関数を組み込めるらしいので出来たりしないかなと思ったのですが
937NAME IS NULL:2012/08/09(木) 22:20:29.57 ID:???
>>936
漢字コードの並びはJIS第一水準が音読みで第二水準が部首順じゃなかったかな。
だから読みで並べるのは無理だし、漢字には複数の読み方があるので
期待通りには並ばないな。

素直にフリガナ付けてそっちでソート
938NAME IS NULL:2012/08/10(金) 05:28:19.10 ID:???
>>936
> やっぱ膨大な辞書DBでもないと無理ですよね

>>937 も書いてる通り、「漢字には複数の読み方がある」から根本的に無理。
特に人名は顕著だし。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1238067142

たまに間違えてもいいなら、膨大な辞書もって統計的に推定する方法が取れ
るかもしれないが。
939NAME IS NULL:2012/08/10(金) 10:05:53.54 ID:???
ふつうに考えれば音訓複数の読みがある上に複合語では同じ単語でも読みが異なるとか
そのままソートが不可能だと思わないのかな?
940NAME IS NULL:2012/08/10(金) 10:47:54.29 ID:dgVF/wY5
老舗と世論が並んでたらどっちが先にくるのかっていう
941NAME IS NULL:2012/08/10(金) 11:22:23.57 ID:???
>>939
漢字列でソートしてくれなんて要求が有ったら
脊髄反射レベルで断る。
942NAME IS NULL:2012/08/10(金) 12:41:38.02 ID:???
日本向けにカスタマイズされた日本製RDBMSでもあれば
そういう機能も組み込んでるでしょう
まあたぶんないけど
943NAME IS NULL:2012/08/10(金) 13:17:36.07 ID:???
>>940
?と思ったけど「ろうほ」なんて読み方有るんだな、知らなかった。
944NAME IS NULL:2012/08/10(金) 13:27:16.96 ID:dgVF/wY5
浅草と浅草寺とか
945NAME IS NULL:2012/08/10(金) 13:42:11.42 ID:???
>>942
組み込んでるも何も、原理的に無理という話なんだが。
946NAME IS NULL:2012/08/10(金) 15:03:22.17 ID:???
原理的に無理じゃない
作ろうと思えば作れる
947NAME IS NULL:2012/08/10(金) 15:20:50.22 ID:???
じゃあ >>240 の分だけでいいから、作ってみなよ。
948NAME IS NULL:2012/08/10(金) 15:44:23.82 ID:dgVF/wY5
藤村俊二と島崎藤村とか
949NAME IS NULL:2012/08/10(金) 21:38:08.93 ID:???
>>946
漢字の1〜n個の全ての組み合わせのソート用辞書を作れば不可能ではないな。
そんなんやるんなら素直にふりがな付けます。
950NAME IS NULL:2012/08/10(金) 21:56:43.55 ID:???
>>949
その組み合わせのどれを選択するつもりなんだよ…。

ネタで言ってるんじゃないなら、まじでプログラマー向いてないと思うぞ。
951NAME IS NULL:2012/08/11(土) 14:01:32.87 ID:???
>>949
>>940はどうすんだよ、池沼
952NAME IS NULL:2012/08/11(土) 16:44:51.06 ID:???
>>950
漢字の全ての組み合わせに決まっておろうw
組み合わせの結果、存在しない熟語も含めて全てふりがな辞書を作る。

JIS第1と第2で6,355文字あるので10文字の組み合わせだけでも
107437414620186645551479209503916015625通り

計算違うか?w
今のハードでは無理だな
953NAME IS NULL:2012/08/11(土) 16:52:52.12 ID:???
>>952
熟語の振り仮名が一つじゃないって言う例が >>940 に書いてあるんだが…
954NAME IS NULL:2012/08/11(土) 17:33:11.66 ID:???
プログラマーに向いているとかの前に日本人じゃないんだろう。漢字を知らないとしか思えない。
955NAME IS NULL:2012/08/11(土) 17:55:25.89 ID:???
>>953
そういうのは普通のアプリ開発でも制限事項とするだろう。
それが許容されるかどうかは >>933 の顧客(?)の要求仕様次第。
956NAME IS NULL:2012/08/11(土) 17:56:51.51 ID:???
>>954
漢字を知らない連中がユニコード作っちゃったわけだが
957NAME IS NULL:2012/08/11(土) 18:42:07.46 ID:???
>>955
複数の読み方がある熟語は入力禁止とか? (w

これを「制限事項」とか言ってくるベンダーいたら今後取引しないよ。
958NAME IS NULL:2012/08/11(土) 19:18:02.08 ID:???
世論はせろんでもよろんでも意味は同じだが
追従はついしょうとついじゅうで意味が異なる。
困ったなw
959NAME IS NULL:2012/08/11(土) 21:16:49.53 ID:???
>>933-958
板違い。SQLiteどころかデータベース関係ないし。

続きは↓あたりでどうぞ。

・プログラム技術
 文字コード総合スレ part7
 http://toro.2ch.net/test/read.cgi/tech/1306595564/
960NAME IS NULL:2012/08/11(土) 21:18:18.91 ID:???
>>957
なんでやねん
片方の読みに統一やがな

>>958
『追従』だけでてきたら何かわからんがな

>>952 にあるような天文学的組み合わせが出てきた時点でネタ確定ですがな
おまえら暇なんやのぅ
961NAME IS NULL:2012/08/12(日) 08:39:04.56 ID:???
>>959
ORDER BYの話題だろ
962NAME IS NULL:2012/08/12(日) 17:24:37.04 ID:???
ORDER BYの話題になってないって話でしょ。
963NAME IS NULL:2012/08/12(日) 20:58:14.31 ID:???
これ任意のソートってできないの?
964NAME IS NULL:2012/08/13(月) 00:33:33.79 ID:???
「任意のソート」とか言う、オレオレ用語をちゃんと定義してくれ。
965NAME IS NULL:2012/08/13(月) 01:28:27.32 ID:???
つまりオレオレ並べ替え。
一行目を二行目と三行目の間に突っ込むとか。
966NAME IS NULL:2012/08/13(月) 01:37:23.98 ID:???
Excel でも使っとけ。
967NAME IS NULL:2012/08/13(月) 07:53:51.50 ID:???
みんな難しい事考えてるのね
968NAME IS NULL:2012/08/13(月) 08:54:20.50 ID:???
× 難しいこと
○ アホなこと
969NAME IS NULL:2012/08/13(月) 09:01:17.16 ID:???
おまえらしょうもないスケージュール管理とかそんなことしかやってないの?
970NAME IS NULL:2012/08/13(月) 09:07:04.84 ID:???
ちょと何言ってるかわかんない
971NAME IS NULL:2012/08/13(月) 10:06:11.02 ID:???
ORDER BY に延々と書けば好きな順番にできるw
972NAME IS NULL:2012/08/13(月) 10:24:19.03 ID:???
夏休みで空気脳が降臨しましたw
973NAME IS NULL:2012/08/13(月) 11:04:10.00 ID:???
日本脳炎ですね
974NAME IS NULL:2012/08/13(月) 11:40:26.14 ID:???
>>971
>>933を解決してください。
975NAME IS NULL:2012/08/13(月) 11:56:49.81 ID:???
>>974
>>963へのレスだよ。
同じ読みは人間でも区別付かないから無理だろ。

任意の順番なら、 ORDER BY num = 15 DESC, num = 3 DESC , ・・・
とかつなげりゃ好きな順番にできる。
976NAME IS NULL:2012/08/13(月) 11:58:01.64 ID:???
×同じ読み
○漢字の読み

ミスった
977NAME IS NULL:2012/08/13(月) 12:28:32.00 ID:???
>>971
一行目、二行目、三行目を識別するフィールドが無い場合は?
>>963 みたいな奴は、そういうテーブルでも何とかしろとか言うぞ。
Excel はできるからな。(w
978NAME IS NULL:2012/08/13(月) 13:46:16.75 ID:???
識別するフィールドとかそういう専門用語はわからないけど個別にidならふってるよ
979NAME IS NULL:2012/08/13(月) 14:50:46.24 ID:???
カードのシャフルみたいにidとか関係なく何枚目を何枚目の後に移動とかそういう事じゃないの?
980NAME IS NULL:2012/08/13(月) 15:14:19.82 ID:???
だからそう言ってんじゃん
981NAME IS NULL:2012/08/13(月) 15:19:58.81 ID:???
978を読めよ
982NAME IS NULL:2012/08/13(月) 21:30:14.97 ID:???
このスレきもすぎ
983NAME IS NULL:2012/08/13(月) 23:00:13.37 ID:7Zv3PRLA
というか文字列型って単なるbinary string扱いなんだよな

substr() がマルチバイト対応されてないので、五十音索引ページとか作ろうとすると、
アプリ側でもう一度集約処理してあげないといけなくて、うへぇ。。
984NAME IS NULL:2012/08/14(火) 21:41:33.98 ID:???
ふり仮名データみたいなのを一緒に持たせないときびしい
985NAME IS NULL
>>983
> substr() がマルチバイト対応されてないので

http://www.sqlite.org/lang_corefunc.html
substr(X,Y,Z): If X is a string then characters indices refer to actual UTF-8 characters.

> create table t (name text);
> .separator '\n'
> .import test.txt t1 -- test.txt は、このスレの内容を utf-8 で保存したもの。
> select substr(name, 1, 1), count(*) from t group by substr(name, 1, 1) order by count(*);
...
"お",94
"な",96
"あ",102
"ど",110
s,128
h,130
"こ",136
S,178
9,194
4,222
6,226
5,228
7,228
8,230
2,240
3,248
1,260
"そ",272
>,724
"",1562