OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

Verticaでの大文字と小文字の認識のされ方

公開日:
更新日:
アーキテクチャ
FAQ
#命名規則

大文字と小文字の区別

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で確認しています。