大文字と小文字の区別
Verticaで大文字と小文字がどのように区別されるのか、以下にまとめてみました。
大文字と小文字を区別してデータを取り扱いたい時に、後述する例と合わせて参考にしてみてください。
| 項目 | 区別の有無 |
|---|---|
| データ | 区別される |
| オブジェクト名 | 区別されない |
データでの区別
Verticaでは、データ内に格納される John というデータは、johnや JOHN とは明確に区別されます。
■テスト用テーブルの作成
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)■テストデータの挿入
dbadmin=> insert into test_tab values ('JOHN');
OUTPUT
--------
1
(1 row)
dbadmin=> insert into test_tab values ('John');
OUTPUT
--------
1
(1 row)■データの検索(全件)
dbadmin=> select * from test_tab;
col1
------------
JOHN ★全て大文字でINSERTされている
John ★先頭だけ大文字でINSERTされている
(2 rows)■データの検索(あいまい検索)
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テーブルを作成
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テーブルを作成
dbadmin=> create table CUSTOMER (col_1 char(10));
ROLLBACK 4213: Object "CUSTOMER" already exists
★既に作成したCUSTOMERテーブルと同一と見なされエラー■小文字でcustomerテーブルを作成
dbadmin=> create table customer (col_1 char(10));
ROLLBACK 4213: Object "customer" already exists
★既に作成したCUSTOMERテーブルと同一と見なされエラー■テーブルの確認
dbadmin=> \d
List of tables
Schema | Name | Kind | Owner | Comment
--------+----------+-------+---------+---------
public | customer | table | dbadmin |
(1 rows)検証バージョンについて
この記事の内容はVertica 9.1で確認しています。