MySQL trim()函式

2019-10-16 22:54:49

在本教學中,我們將向您展示如何使用MySQL TRIM()函式從字串中刪除不必要的前導和字尾字元。

MySQL TRIM函式介紹

使用者輸入的資料通常不是我們所預期的。有時候,它的格式不正確,例如錯誤的情況,甚至有些甚至包含前導和尾隨空格以及其他不需要的字元。

為了保持資料格式正確,在資料庫中插入更新資料之前,需要對其進行清理。 資料清理中最重要的任務之一是刪除不必要的前導和尾隨字元。

MySQL提供了一個非常有用的名稱為TRIM()的字串函式,以幫助您清理資料。下面說明了TRIM()函式的語法。

TRIM([{BOTH|LEADING|TRAILING} [removed_str]] FROM str);

TRIM函式提供了許多選項

您可以使用LEADINGTRAILINGBOTH選項明確指示TRIM()函式從字串中刪除前導,尾隨或前導和尾隨的不必要的字元。

如果您沒有指定任何內容,TRIM()函式預設使用BOTH選項。

[removed_str]是要刪除的字串。預設情況下,它是一個空格。這意味著如果不指定特定的字串,則TRIM()函式僅刪除空格。

str是要刪除子字元removed_str的字串。

TRIM()函式返回一個字串,刪除不需要的字元。

MySQL 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函式。

MySQL LTRIM和RTRIM函式

如果要僅刪除前導或尾隨空格,則可以使用其他字串函式:LTRIMRTRIM

以下語句使用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()函式從字串中刪除不需要的前導和字尾字元。