大文字と小文字の区別
Verticaで大文字と小文字がどのように区別されるのか、以下にまとめてみました。大文字と小文字を区別してデータを取り扱いたい時に、後述する例と合わせて参考にしてみてください。
項目 | 区別の有無 |
---|---|
データ | 区別される |
オブジェクト名 | 区別されない |
データでの区別
Verticaでは、データ内に格納される John というデータは、johnや JOHN とは明確に区別されます。■テスト用テーブルの作成
1 2 3 4 5 6 7 8 9 |
dbadmin=> create table test_tab (col1 char(10)); CREATE TABLE dbadmin=> \d test_tab List of Fields by Tables Schema | Table | Column | Type | Size | Default | Not Null | Primary Key | Foreign Key --------+----------+--------+----------+------+---------+----------+-------------+------------- public | test_tab | col1 | char(10) | 10 | | f | f | (1 row) |
■テストデータの挿入
1 2 3 4 5 6 7 8 9 10 11 |
dbadmin=> insert into test_tab values ('JOHN'); OUTPUT -------- 1 (1 row) dbadmin=> insert into test_tab values ('John'); OUTPUT -------- 1 (1 row) |
■データの検索(全件)
1 2 3 4 5 6 |
dbadmin=> select * from test_tab; col1 ------------ JOHN ★全て大文字でINSERTされている John ★先頭だけ大文字でINSERTされている (2 rows) |
■データの検索(あいまい検索)
1 2 3 4 5 6 7 8 9 10 11 |
dbadmin=> select * from test_tab where col1 like 'JO%'; col1 ------------ JOHN ★John(先頭だけ大文字)は一致しない (1 row) dbadmin=> select * from test_tab where col1 like 'Jo%'; col1 ------------ John ★JOHN(全て大文字)は一致しない (1 row) |
オブジェクトでの区別
表名などのオブジェクトは、デフォルトでは大文字と小文字が区別されません。例えば、customer 表と Customer 表は同一のオブジェクトとして識別されます。
■小文字でcustomerテーブルを作成
1 2 3 4 5 6 7 8 9 |
dbadmin=> create table customer (col_1 char(10)); CREATE TABLE dbadmin=> \d List of tables Schema | Name | Kind | Owner | Comment --------+----------+-------+---------+--------- public | customer | table | dbadmin | (1 rows) |
■その後で大文字でCUSTOMERテーブルを作成
1 2 3 |
dbadmin=> create table CUSTOMER (col_1 char(10)); ROLLBACK 4213: Object "CUSTOMER" already exists ★既に作成したCUSTOMERテーブルと同一と見なされエラー |
■小文字でcustomerテーブルを作成
1 2 3 |
dbadmin=> create table customer (col_1 char(10)); ROLLBACK 4213: Object "customer" already exists ★既に作成したCUSTOMERテーブルと同一と見なされエラー |
■テーブルの確認
1 2 3 4 5 6 |
dbadmin=> \d List of tables Schema | Name | Kind | Owner | Comment --------+----------+-------+---------+--------- public | customer | table | dbadmin | (1 rows) |