本記事では、具体的な例を通じてクエリ内で文字列連結演算子を使用する方法を説明します。
文字列連結演算子
OceanBaseデータベースのMySQLモードでは、文字列連結関数としてCONCAT()やCONCAT_WS()などがあります。'||'はデフォルトでは論理演算子「または」を表しますが、特定のsql_modeを設定することで、'||'を文字列連結演算子として使用することもできます。
例
サンプルテーブルを作成し、適切なデータを挿入します。
obclient> CREATE TABLE cust (
c_id INTEGER,
c_first VARCHAR(20),
c_last VARCHAR(20),
c_credit DECIMAL(10, 2)
);
Query OK, 0 rows affected
obclient> INSERT INTO cust VALUES(101,'Ann','Smith',16.10);
1 row affected
obclient> INSERT INTO cust VALUES(102,'Madeleine','Johnson',23.00);
1 row affected
obclient> INSERT INTO cust VALUES(103,'Michael','Brown',9.05);
1 row affected
クエリでの文字列連結演算子の使用
"||" を文字列連結演算子として使用してクエリを実行します。
変数
sql_modeの値にオプションPIPES_AS_CONCATを追加すると、'||' も文字列連結演算子として扱われます。obclient> SET SESSION sql_mode='PIPES_AS_CONCAT,STRICT_TRANS_TABLES,STRICT_ALL_TABLES'; Query OK, 0 rows affected obclient> SELECT c_first || ' ' || c_last full_name FROM cust ORDER BY c_last LIMIT 2; +-------------------+ | full_name | +-------------------+ | Michael Brown | | Madeleine Johnson | +-------------------+ 2 rows in setCONCAT_WS関数を使用して文字列を連結します。obclient> SELECT CONCAT_WS(' ', c_first, c_last) full_name FROM cust ORDER BY c_last LIMIT 2; +-------------------+ | full_name | +-------------------+ | Michael Brown | | Madeleine Johnson | +-------------------+ 2 rows in set