MySQL/文字列の不要なスペースをトリミングする・TRIM・LTRIM・RTRIM
の編集
Top
/
MySQL
/
文字列の不要なスペースをトリミングする・TRIM・LTRIM・RTRIM
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
PostgreSQL/template0とtemplate1の違いについて
#navi(../) * MySQLで文字列の不要なスペースをトリミングする・TRIM・LTRIM・RTRIM [#f357b716] 本資料はMySQLで文字列の前後にある不要なスペースを削除する文字列関数TRIM, LTRIM, RTRIMについて記述します。~ #contents #htmlinsertpcsp(db-top.html,db-sp.html) * 参考資料 [#ade08b67] -MySQLのドキュメント~ [[MySQL 5.1 リファレンスマニュアル :: 11 関数と演算子 :: 11.3 文字列関数>http://dev.mysql.com/doc/refman/5.1/ja/string-functions.html]] * 関連記事 [#racb4f0a] -[[PostgreSQLで文字列の不要なスペースをトリミングする・TRIM・LTRIM・RTRIM>PostgreSQL/文字列の不要なスペースをトリミングする・TRIM・LTRIM・RTRIM]] -[[MySQLでダブルパイプを使用して文字連結をする方法>MySQL/MySQLでダブルパイプを使用して文字連結をする方法]] * 環境および環境設定など [#l5eb6958] 使用したOSはCentOS6になります。~ MySQLのバージョンは以下のとおりです。 mysql> select version(); +-----------+ | version() | +-----------+ | 5.1.66 | +-----------+ 1 row in set (0.01 sec) 以下のSQLを実行し、データベースおよびテーブルを作成しデータを投入しました。~ mysql> create database trimdb; Query OK, 1 row affected (0.00 sec) mysql> use trimdb Database changed mysql> create table trimtbl (c1 varchar(10)); Query OK, 0 rows affected (0.09 sec) mysql> insert into trimtbl values(' hello '),(' world '); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from trimtbl; +-----------+ | c1 | +-----------+ | hello | | world | +-----------+ 2 rows in set (0.00 sec) * LTRIM, RTRIMを使ってみる。 [#na626028] 作成したテーブルを使用してLTRIM, RTRIMを使用してみます。 concat関数で$を末尾に連結しています。~ これは、LTRIM, RTRIMで末尾が削除されているかを確認するために$をカラムの値の後ろに連結しました。 mysql> select concat(ltrim(c1),'$'), concat(rtrim(c1),'$') from trimtbl; +-----------------------+-----------------------+ | concat(ltrim(c1),'$') | concat(rtrim(c1),'$') | +-----------------------+-----------------------+ | hello $ | hello$ | | world $ | world$ | +-----------------------+-----------------------+ 2 rows in set (0.00 sec) 上記結果によりLTRIMは左側のスペースを削除し、RTRIMは右側のスペースを削除するのが確認できます。 * TRIMを使ってみる [#gdd28209] TRIM関数は任意の文字列を削除することができます。 ** 引数指定なしでTRIMを実行する(前後のスペース削除) [#g586b729] 引数を指定しないでtrimを実行すると前後のスペースを削除します。 mysql> select concat(trim(c1),'$'), concat(trim(c1),'$') from trimtbl; +----------------------+----------------------+ | concat(trim(c1),'$') | concat(trim(c1),'$') | +----------------------+----------------------+ | hello$ | hello$ | | world$ | world$ | +----------------------+----------------------+ 2 rows in set (0.00 sec) trim(文字列)は、以下のように書くこともできます。 select trim(both from カラム名) from テーブル名; 文字列を直に設定し実行することもできます。 mysql> select trim(' HELLO WORLD '); +-----------------------+ | trim(' HELLO WORLD ') | +-----------------------+ | HELLO WORLD | +-----------------------+ 1 row in set (0.00 sec) mysql> select trim(both from ' HELLO WORLD '); +---------------------------------+ | trim(both from ' HELLO WORLD ') | +---------------------------------+ | HELLO WORLD | +---------------------------------+ 1 row in set (0.00 sec) ** 引数指定を指定してみる [#db1f93e1] 上記ではBOTHを指定しました。~ 以下では、LEADING, TRAILINGを使用した例を記します。 - LEADINGはLTRIMと同じ動作 mysql> SELECT CONCAT(TRIM(LEADING FROM ' HELLO WORLD '), '$'); +---------------------------------------------------+ | CONCAT(TRIM(LEADING FROM ' HELLO WORLD '), '$') | +---------------------------------------------------+ | HELLO WORLD $ | +---------------------------------------------------+ 1 row in set (0.00 sec) - TRAILINGはRTRIMと同じ動作 mysql> SELECT CONCAT(TRIM(TRAILING FROM ' HELLO WORLD '), '$'); +----------------------------------------------------+ | CONCAT(TRIM(TRAILING FROM ' HELLO WORLD '), '$') | +----------------------------------------------------+ | HELLO WORLD$ | +----------------------------------------------------+ 1 row in set (0.00 sec) ** 文字列を指定しトリミングする [#x45c1ffa] BOTH, LEADING, TRAILINGを使用し文字列を指定してトリミングしてみる - BOTH BOTHの場合は指定した文字列(abc)を先頭と末尾から削除します。~ 以下の実行例はabcSAKURAabcがSAKURAになります。 mysql> SELECT TRIM(BOTH 'abc' FROM 'abcSAKURAabc'); +--------------------------------------+ | TRIM(BOTH 'abc' FROM 'abcSAKURAabc') | +--------------------------------------+ | SAKURA | +--------------------------------------+ 1 row in set (0.00 sec) - LEADING LEADINGの場合は指定した文字列(abc)を先頭(左側)から削除します。~ 以下の実行例はabcSAKURAabcがSAKURAabcになります。 mysql> SELECT TRIM(LEADING 'abc' FROM 'abcSAKURAabc'); +-----------------------------------------+ | TRIM(LEADING 'abc' FROM 'abcSAKURAabc') | +-----------------------------------------+ | SAKURAabc | +-----------------------------------------+ 1 row in set (0.00 sec) - TRAILING TRAILINGの場合は指定した文字列(abc)を先頭(左側)から削除します。~ 以下の実行例はabcSAKURAabcがabcSAKURAになります。 mysql> SELECT TRIM(TRAILING 'abc' FROM 'abcSAKURAabc'); +------------------------------------------+ | TRIM(TRAILING 'abc' FROM 'abcSAKURAabc') | +------------------------------------------+ | abcSAKURA | +------------------------------------------+ 1 row in set (0.00 sec) #htmlinsertpcsp(db-btm.html,db-sp.html)
タイムスタンプを変更しない
#navi(../) * MySQLで文字列の不要なスペースをトリミングする・TRIM・LTRIM・RTRIM [#f357b716] 本資料はMySQLで文字列の前後にある不要なスペースを削除する文字列関数TRIM, LTRIM, RTRIMについて記述します。~ #contents #htmlinsertpcsp(db-top.html,db-sp.html) * 参考資料 [#ade08b67] -MySQLのドキュメント~ [[MySQL 5.1 リファレンスマニュアル :: 11 関数と演算子 :: 11.3 文字列関数>http://dev.mysql.com/doc/refman/5.1/ja/string-functions.html]] * 関連記事 [#racb4f0a] -[[PostgreSQLで文字列の不要なスペースをトリミングする・TRIM・LTRIM・RTRIM>PostgreSQL/文字列の不要なスペースをトリミングする・TRIM・LTRIM・RTRIM]] -[[MySQLでダブルパイプを使用して文字連結をする方法>MySQL/MySQLでダブルパイプを使用して文字連結をする方法]] * 環境および環境設定など [#l5eb6958] 使用したOSはCentOS6になります。~ MySQLのバージョンは以下のとおりです。 mysql> select version(); +-----------+ | version() | +-----------+ | 5.1.66 | +-----------+ 1 row in set (0.01 sec) 以下のSQLを実行し、データベースおよびテーブルを作成しデータを投入しました。~ mysql> create database trimdb; Query OK, 1 row affected (0.00 sec) mysql> use trimdb Database changed mysql> create table trimtbl (c1 varchar(10)); Query OK, 0 rows affected (0.09 sec) mysql> insert into trimtbl values(' hello '),(' world '); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from trimtbl; +-----------+ | c1 | +-----------+ | hello | | world | +-----------+ 2 rows in set (0.00 sec) * LTRIM, RTRIMを使ってみる。 [#na626028] 作成したテーブルを使用してLTRIM, RTRIMを使用してみます。 concat関数で$を末尾に連結しています。~ これは、LTRIM, RTRIMで末尾が削除されているかを確認するために$をカラムの値の後ろに連結しました。 mysql> select concat(ltrim(c1),'$'), concat(rtrim(c1),'$') from trimtbl; +-----------------------+-----------------------+ | concat(ltrim(c1),'$') | concat(rtrim(c1),'$') | +-----------------------+-----------------------+ | hello $ | hello$ | | world $ | world$ | +-----------------------+-----------------------+ 2 rows in set (0.00 sec) 上記結果によりLTRIMは左側のスペースを削除し、RTRIMは右側のスペースを削除するのが確認できます。 * TRIMを使ってみる [#gdd28209] TRIM関数は任意の文字列を削除することができます。 ** 引数指定なしでTRIMを実行する(前後のスペース削除) [#g586b729] 引数を指定しないでtrimを実行すると前後のスペースを削除します。 mysql> select concat(trim(c1),'$'), concat(trim(c1),'$') from trimtbl; +----------------------+----------------------+ | concat(trim(c1),'$') | concat(trim(c1),'$') | +----------------------+----------------------+ | hello$ | hello$ | | world$ | world$ | +----------------------+----------------------+ 2 rows in set (0.00 sec) trim(文字列)は、以下のように書くこともできます。 select trim(both from カラム名) from テーブル名; 文字列を直に設定し実行することもできます。 mysql> select trim(' HELLO WORLD '); +-----------------------+ | trim(' HELLO WORLD ') | +-----------------------+ | HELLO WORLD | +-----------------------+ 1 row in set (0.00 sec) mysql> select trim(both from ' HELLO WORLD '); +---------------------------------+ | trim(both from ' HELLO WORLD ') | +---------------------------------+ | HELLO WORLD | +---------------------------------+ 1 row in set (0.00 sec) ** 引数指定を指定してみる [#db1f93e1] 上記ではBOTHを指定しました。~ 以下では、LEADING, TRAILINGを使用した例を記します。 - LEADINGはLTRIMと同じ動作 mysql> SELECT CONCAT(TRIM(LEADING FROM ' HELLO WORLD '), '$'); +---------------------------------------------------+ | CONCAT(TRIM(LEADING FROM ' HELLO WORLD '), '$') | +---------------------------------------------------+ | HELLO WORLD $ | +---------------------------------------------------+ 1 row in set (0.00 sec) - TRAILINGはRTRIMと同じ動作 mysql> SELECT CONCAT(TRIM(TRAILING FROM ' HELLO WORLD '), '$'); +----------------------------------------------------+ | CONCAT(TRIM(TRAILING FROM ' HELLO WORLD '), '$') | +----------------------------------------------------+ | HELLO WORLD$ | +----------------------------------------------------+ 1 row in set (0.00 sec) ** 文字列を指定しトリミングする [#x45c1ffa] BOTH, LEADING, TRAILINGを使用し文字列を指定してトリミングしてみる - BOTH BOTHの場合は指定した文字列(abc)を先頭と末尾から削除します。~ 以下の実行例はabcSAKURAabcがSAKURAになります。 mysql> SELECT TRIM(BOTH 'abc' FROM 'abcSAKURAabc'); +--------------------------------------+ | TRIM(BOTH 'abc' FROM 'abcSAKURAabc') | +--------------------------------------+ | SAKURA | +--------------------------------------+ 1 row in set (0.00 sec) - LEADING LEADINGの場合は指定した文字列(abc)を先頭(左側)から削除します。~ 以下の実行例はabcSAKURAabcがSAKURAabcになります。 mysql> SELECT TRIM(LEADING 'abc' FROM 'abcSAKURAabc'); +-----------------------------------------+ | TRIM(LEADING 'abc' FROM 'abcSAKURAabc') | +-----------------------------------------+ | SAKURAabc | +-----------------------------------------+ 1 row in set (0.00 sec) - TRAILING TRAILINGの場合は指定した文字列(abc)を先頭(左側)から削除します。~ 以下の実行例はabcSAKURAabcがabcSAKURAになります。 mysql> SELECT TRIM(TRAILING 'abc' FROM 'abcSAKURAabc'); +------------------------------------------+ | TRIM(TRAILING 'abc' FROM 'abcSAKURAabc') | +------------------------------------------+ | abcSAKURA | +------------------------------------------+ 1 row in set (0.00 sec) #htmlinsertpcsp(db-btm.html,db-sp.html)
テキスト整形のルールを表示する