在本教學中,我們將向您展示如何使用MySQL TRIM()
函式從字串中刪除不必要的前導和字尾字元。
使用者輸入的資料通常不是我們所預期的。有時候,它的格式不正確,例如錯誤的情況,甚至有些甚至包含前導和尾隨空格以及其他不需要的字元。
為了保持資料格式正確,在資料庫中插入或更新資料之前,需要對其進行清理。 資料清理中最重要的任務之一是刪除不必要的前導和尾隨字元。
MySQL提供了一個非常有用的名稱為TRIM()
的字串函式,以幫助您清理資料。下面說明了TRIM()
函式的語法。
TRIM([{BOTH|LEADING|TRAILING} [removed_str]] FROM str);
您可以使用LEADING
,TRAILING
或BOTH
選項明確指示TRIM()
函式從字串中刪除前導,尾隨或前導和尾隨的不必要的字元。
如果您沒有指定任何內容,TRIM()
函式預設使用BOTH
選項。
[removed_str]
是要刪除的字串。預設情況下,它是一個空格。這意味著如果不指定特定的字串,則TRIM()
函式僅刪除空格。
str
是要刪除子字元removed_str
的字串。
TRIM()
函式返回一個字串,刪除不需要的字元。
以下語句從字串中除去前導和尾隨空格。
mysql> SELECT TRIM(' MySQL TRIM Function ');
+-------------------------------+
| TRIM(' MySQL TRIM Function ') |
+-------------------------------+
| MySQL TRIM Function |
+-------------------------------+
1 row in set
以下語句僅刪除前導空格 -
mysql> SELECT TRIM(LEADING FROM ' MySQL TRIM Function ');
+-------------------------------------------------+
| TRIM(LEADING FROM ' MySQL TRIM Function ') |
+-------------------------------------------------+
| MySQL TRIM Function |
+-------------------------------------------------+
1 row in set
以下語句僅刪除尾隨空格 -
mysql> SELECT TRIM(TRAILING FROM ' MySQL TRIM Function ');
+--------------------------------------------------+
| TRIM(TRAILING FROM ' MySQL TRIM Function ') |
+--------------------------------------------------+
| MySQL TRIM Function |
+--------------------------------------------------+
1 row in set
以下語句刪除字串末尾的換行符 -
-- 方式一
SELECT
TRIM(TRAILING '\n' FROM field_name)
FROM table_name;
-- 方式二
SELECT
TRIM(TRAILING '\r' FROM field_name)
FROM table_name;
-- 方式三
SELECT
TRIM(TRAILING '\r\n' FROM field_name)
FROM table_name;
請注意,基於平台,新行可以是\n
(Unix或Linux),\r
(Mac)或兩者(\r\n
)。
如果資料已經存在,並且要清理空格或任何其他不需要的字元,則可以在UPDATE語句中使用TRIM()
函式。
我們將在範例資料庫(yiibaidb)中的products
表中進行演示,如下所示 -
mysql> desc products;
+--------------------+---------------+------+-----+---------+------------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+---------------+------+-----+---------+------------------+
| productCode | varchar(15) | NO | PRI | | |
| productName | varchar(70) | NO | MUL | NULL | |
| productLine | varchar(50) | NO | MUL | NULL | |
| productScale | varchar(10) | NO | | NULL | |
| productVendor | varchar(50) | NO | | NULL | |
| productDescription | text | NO | | NULL | |
| quantityInStock | smallint(6) | NO | | NULL | |
| buyPrice | decimal(10,2) | NO | | NULL | |
| MSRP | decimal(10,2) | NO | | NULL | |
| stockValue | double | YES | | NULL | STORED GENERATED |
+--------------------+---------------+------+-----+---------+------------------+
10 rows in set
以下語句將刪除products
表中產品名稱的所有空格並更新,如下查詢語句 -
UPDATE products
SET
productname = TRIM(productname);
請注意,TRIM
函式僅從字串中刪除不需要的前導和/或字尾字元。如果要刪除字串中間不需要的字元,則應使用REPLACE函式。
如果要僅刪除前導或尾隨空格,則可以使用其他字串函式:LTRIM
和RTRIM
。
以下語句使用LTRIM
函式來刪除字串的前導空格。
SELECT LTRIM(' MySQL LTRIM function');
執行上面查詢語句,得到以下結果 -
mysql> SELECT LTRIM(' MySQL LTRIM function');
+---------------------------------+
| LTRIM(' MySQL LTRIM function') |
+---------------------------------+
| MySQL LTRIM function |
+---------------------------------+
1 row in set
以下語句使用RTRIM()
函式來刪除字串的尾隨空格。
SELECT RTRIM('MySQL RTRIM function ');
執行上面查詢語句,得到以下結果 -
mysql> SELECT RTRIM('MySQL RTRIM function ');
+----------------------------------+
| RTRIM('MySQL RTRIM function ') |
+----------------------------------+
| MySQL RTRIM function |
+----------------------------------+
1 row in set
在本教學中,您已經學習了如何使用TRIM()
函式從字串中刪除不需要的前導和字尾字元。