本記事では、具体的な例を通じてクエリ内で文字列関数を使用する方法を紹介します。
文字列関数
よく使われる文字列関数には、文字列の長さを求める関数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('中国'), LENGTH('中国'),CHAR_LENGTH('hello');
+-----------------------+------------------+----------------------+
| CHAR_LENGTH('中国') | LENGTH('中国') | CHAR_LENGTH('hello') |
+-----------------------+------------------+----------------------+
| 2 | 6 | 5 |
+-----------------------+------------------+----------------------+
1 row in set