# select * from T where〈 列1個 〉(not) between〈 式 〉
# 
# between 列 and 列によるテスト
# --nchar型文字列とnchar型文字列との検索
# 索引
# --索引き有り

Begin;
Initialize;

InitializeSession "";
Command "create database TESTDB";
TerminateSession;

InitializeSession "TESTDB";


# メインテーブル
Command  "create table T(C1 int, C2 int)";
Command  "create index I_1 on T(C1)";
Command  "create index I_2 on T(C2)";
Command  "insert into T (C1, C2) values (?, ?)" [ 1,   3   ];
Command  "insert into T (C1, C2) values (?, ?)" [ 2,   4   ];
Command  "insert into T (C1, C2) values (?, ?)" [ 3,   5   ];
Command  "insert into T (C1, C2) values (?, ?)" [ 4,   6   ];
Command  "insert into T (C1, C2) values (?, ?)" [ 5,   7   ];
Command  "insert into T (C1, C2) values (?, ?)" [ 6,   6   ];
Command  "insert into T (C1, C2) values (?, ?)" [null, 5   ];
Command  "insert into T (C1, C2) values (?, ?)" [ 7,   null];
Command  "insert into T (C1, C2) values (?, ?)" [ 8,   4   ];
Command  "insert into T (C1, C2) values (?, ?)" [ 9,   3   ];
Command  "insert into T (C1, C2) values (?, ?)" [null, 4   ];
Command  "insert into T (C1, C2) values (?, ?)" [10,   null];
Command  "insert into T (C1, C2) values (?, ?)" [11,   null];
Command  "insert into T (C1, C2) values (?, ?)" [null, 5   ];
Command  "insert into T (C1, C2) values (?, ?)" [12,   6   ];
Command  "insert into T (C1, C2) values (?, ?)" [13,   null];
Command  "insert into T (C1, C2) values (?, ?)" [null, null];


# --between
Command  "select * from T where C1 between ? - ? and ? - ?" [5, 2, 6, 2];
Command  "select * from T where C1 between ? + ? and ? + ?" [5, 2, 6, 2];
Command  "select * from T where C1 between ? / ? and ? / ?" [5, 2, 6, 2];
Command  "select * from T where C1 between ? * ? and ? * ?" [5, 2, 6, 2];
Command  "select * from T where C1 between ? - ? and ? + ?" [5, 2, 6, 2];
Command  "select * from T where C1 between ? + ? and ? - ?" [5, 2, 6, 2];
Command  "select * from T where C1 between ? * ? and ? / ?" [5, 2, 6, 2];
Command  "select * from T where C1 between ? / ? and ? * ?" [5, 2, 6, 2];

Command  "select * from T where C1 between C1 - ? and C1 - ?" [5, 2];
Command  "select * from T where C1 between C1 + ? and C1 + ?" [5, 2];
Command  "select * from T where C1 between C1 / ? and C1 / ?" [5, 2];
Command  "select * from T where C1 between C1 * ? and C1 * ?" [5, 2];
Command  "select * from T where C1 between C1 - ? and C1 + ?" [5, 2];
Command  "select * from T where C1 between C1 + ? and C1 - ?" [5, 2];
Command  "select * from T where C1 between C1 * ? and C1 / ?" [5, 2];
Command  "select * from T where C1 between C1 / ? and C1 * ?" [5, 2];

Command  "select * from T where C1 between C2 - ? and C2 - ?" [5, 2];
Command  "select * from T where C1 between C2 + ? and C2 + ?" [5, 2];
Command  "select * from T where C1 between C2 / ? and C2 / ?" [5, 2];
Command  "select * from T where C1 between C2 * ? and C2 * ?" [5, 2];
Command  "select * from T where C1 between C2 - ? and C2 + ?" [5, 2];
Command  "select * from T where C1 between C2 + ? and C2 - ?" [5, 2];
Command  "select * from T where C1 between C2 * ? and C2 / ?" [5, 2];
Command  "select * from T where C1 between C2 / ? and C2 * ?" [5, 2];

Command  "select * from T where C1 between C2 - C1 and C2";
Command  "select * from T where C1 between C2 + C1 and C2";
Command  "select * from T where C1 between C2 / C1 and C2";
Command  "select * from T where C1 between C2 * C1 and C2";
Command  "select * from T where C1 between C2 and C2 - C1";
Command  "select * from T where C1 between C2 and C2 + C1";
Command  "select * from T where C1 between C2 and C2 / C1";
Command  "select * from T where C1 between C2 and C2 * C1";
Command  "select * from T where C1 between C2 - C1 and C2 + C1";
Command  "select * from T where C1 between C2 / C1 and C2 * C1";


# --not between
Command  "select * from T where C1 not between ? - ? and ? - ?" [5, 2, 6, 2];
Command  "select * from T where C1 not between ? + ? and ? + ?" [5, 2, 6, 2];
Command  "select * from T where C1 not between ? / ? and ? / ?" [5, 2, 6, 2];
Command  "select * from T where C1 not between ? * ? and ? * ?" [5, 2, 6, 2];
Command  "select * from T where C1 not between ? - ? and ? + ?" [5, 2, 6, 2];
Command  "select * from T where C1 not between ? + ? and ? - ?" [5, 2, 6, 2];
Command  "select * from T where C1 not between ? * ? and ? / ?" [5, 2, 6, 2];
Command  "select * from T where C1 not between ? / ? and ? * ?" [5, 2, 6, 2];

Command  "select * from T where C1 not between C1 - ? and C1 - ?" [5, 2];
Command  "select * from T where C1 not between C1 + ? and C1 + ?" [5, 2];
Command  "select * from T where C1 not between C1 / ? and C1 / ?" [5, 2];
Command  "select * from T where C1 not between C1 * ? and C1 * ?" [5, 2];
Command  "select * from T where C1 not between C1 - ? and C1 + ?" [5, 2];
Command  "select * from T where C1 not between C1 + ? and C1 - ?" [5, 2];
Command  "select * from T where C1 not between C1 * ? and C1 / ?" [5, 2];
Command  "select * from T where C1 not between C1 / ? and C1 * ?" [5, 2];

Command  "select * from T where C1 not between C2 - ? and C2 - ?" [5, 2];
Command  "select * from T where C1 not between C2 + ? and C2 + ?" [5, 2];
Command  "select * from T where C1 not between C2 / ? and C2 / ?" [5, 2];
Command  "select * from T where C1 not between C2 * ? and C2 * ?" [5, 2];
Command  "select * from T where C1 not between C2 - ? and C2 + ?" [5, 2];
Command  "select * from T where C1 not between C2 + ? and C2 - ?" [5, 2];
Command  "select * from T where C1 not between C2 * ? and C2 / ?" [5, 2];
Command  "select * from T where C1 not between C2 / ? and C2 * ?" [5, 2];

Command  "select * from T where C1 not between C2 - C1 and C2";
Command  "select * from T where C1 not between C2 + C1 and C2";
Command  "select * from T where C1 not between C2 / C1 and C2";
Command  "select * from T where C1 not between C2 * C1 and C2";
Command  "select * from T where C1 not between C2 and C2 - C1";
Command  "select * from T where C1 not between C2 and C2 + C1";
Command  "select * from T where C1 not between C2 and C2 / C1";
Command  "select * from T where C1 not between C2 and C2 * C1";
Command  "select * from T where C1 not between C2 - C1 and C2 + C1";
Command  "select * from T where C1 not between C2 / C1 and C2 * C1";

Command  "drop table T";


TerminateSession;
# DBの後始末
InitializeSession "";
Command  "drop database TESTDB";
TerminateSession;
Terminate;
End;
