本記事では、具体的な例を通じて、クエリ内で文字列関数をどのように使用するかを紹介します。
文字列関数
よく使用される文字列関数には、文字列の長さを取得する LENGTH() や CHAR_LENGTH()、文字列を切り出す SUBSTR()、文字列を結合する CONCAT() や CONCAT_WS()、大文字・小文字を変換する UPPER() や LOWER()、そして先頭や末尾の文字(空白など)を削除する LTRIM()、RTRIM()、TRIM() などがあります。
例
サンプルテーブルを作成し、適切なデータを挿入します。
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 in set
obclient> INSERT INTO cust VALUES(102,'Madeleine','Johnson',23.00);
1 row in set
obclient> INSERT INTO cust VALUES(103,'Michael','Brown',9.05);
1 row in set
クエリにおける文字列関数の使用
文字列関数CHAR_LENGTH()、CONCAT()、CONCAT_WS()、SUBSTR()、UPPER()を使用してデータをクエリします。
obclient> SELECT CHAR_LENGTH(c_last) namelength
, CONCAT(c_first, c_last) full_name1
, CONCAT_WS('_', c_first, c_last) full_name2
, SUBSTR(c_last, 3)
, UPPER(c_last)
FROM cust ORDER BY c_last LIMIT 3;
+------------+------------------+-------------------+-------------------+---------------+
| namelength | full_name1 | full_name2 | SUBSTR(c_last, 3) | UPPER(c_last) |
+------------+------------------+-------------------+-------------------+---------------+
| 5 | MichaelBrown | Michael_Brown | own | BROWN |
| 7 | MadeleineJohnson | Madeleine_Johnson | hnson | JOHNSON |
| 5 | AnnSmith | Ann_Smith | ith | SMITH |
+------------+------------------+-------------------+-------------------+---------------+
3 rows in set
注意が必要なのは、OceanBaseデータベースのMySQLモードでは、文字列長関数 LENGTH() の長さ単位はバイトであり、CHAR_LENGTH() 関数の文字列長単位は文字であるということです。例:
obclient> SELECT CHAR_LENGTH('OceanBase'), LENGTH('OceanBase'),CHAR_LENGTH('hello');
+-----------------------+------------------+----------------------+
| CHAR_LENGTH('OceanBase') | LENGTH('OceanBase') | CHAR_LENGTH('hello') |
+-----------------------+------------------+----------------------+
| 9 | 9 | 5 |
+-----------------------+------------------+----------------------+
1 row in set