
MySQL提供了許多常用的字符串函數,以下是其中一些常用的字符串函數和用法:
1、CONCAT
CONCAT函數用于連接兩個或多個字符串。以下是一個示例:
SELECT CONCAT('Hello', ' ', 'World') AS greeting;
輸出:
+---------------+
| greeting |
+---------------+
| Hello World |
+---------------+
2、CONCAT_WS
CONCAT_WS函數用于連接兩個或多個字符串,使用一個指定的分隔符。以下是一個示例:
SELECT CONCAT_WS(',', 'apple', 'banana', 'orange') AS fruits;
輸出:
+------------------------+
| fruits |
+------------------------+
| apple,banana,orange |
+------------------------+
在這個例子中,我們將三個字符串'apple'、'banana'、'orange'使用逗號分隔符連接
3、LENGTH
LENGTH函數返回給定字符串的長度(字節數)。以下是一個示例:
SELECT LENGTH('Hello World') AS len;
輸出:
+-----+
| len |
+-----+
| 11 |
+-----+
4、CHAR_LENGTH
在MySQL中,CHAR_LENGTH和LENGTH都是用于獲取字符串長度的函數,但它們有一些區別。
CHAR_LENGTH函數返回字符串中字符的個數,而LENGTH函數返回字符串中字節數的個數。在大多數情況下,這兩個函數返回的結果是相同的,因為一個字符通常只占用一個字節。但是,對于某些特殊字符,如UTF-8編碼中的一些多字節字符,一個字符可能需要占用多個字節,這時候它們就會返回不同的結果。
以下是一個示例:
SELECT CHAR_LENGTH('Hello World') AS char_length, LENGTH('Hello World') AS length;
輸出:
+-------------+--------+
| char_length | length |
+-------------+--------+
| 11 | 11 |
+-------------+--------+
在這個例子中,我們將字符串'Hello World'作為參數傳遞給CHAR_LENGTH和LENGTH函數,并將它們的結果作為兩個列返回。在這個例子中,因為每個字符都只占用一個字節,所以兩個函數返回的結果是相同的。
如果我們使用一個多字節字符,例如一個包含中文的字符串:
SELECT CHAR_LENGTH('你好,世界') AS char_length, LENGTH('你好,世界') AS length;
輸出:
+-------------+--------+
| char_length | length |
+-------------+--------+
| 5 | 15 |
+-------------+--------+
在這個例子中,我們將包含中文的字符串'你好,世界'作為參數傳遞給CHAR_LENGTH和LENGTH函數,并將它們的結果作為兩個列返回。由于中文字符需要使用多個字節來表示,所以LENGTH函數返回的結果是包含中文字符的字節數,即15。而CHAR_LENGTH函數返回的結果是中文字符個數,即5。
因此,當需要處理多字節字符時,應該使用CHAR_LENGTH函數,而不是LENGTH函數。
5、REPLACE
REPLACE函數用于將字符串中的所有匹配項替換為另一個字符串。以下是一個示例:
SELECT REPLACE('Hello World', 'World', 'ctt') AS new_string;
輸出:
+-----------------+
| new_string |
+-----------------+
| Hello ctt |
+-----------------+
在這個例子中,我們用'Universe'替換了原始字符串中的'World'。
6、UPPER和LOWER
UPPER函數將給定字符串轉換為大寫,而LOWER函數將其轉換為小寫。以下是一個示例:
SELECT UPPER('hello') AS uppercase, LOWER('WORLD') AS lowercase;
輸出:
+-----------+-----------+
| uppercase | lowercase |
+-----------+-----------+
| HELLO | world |
+-----------+-----------+
在這個例子中,我們將'hello'轉換為大寫,并將'WORLD'轉換為小寫。
7、TRIM
TRIM函數用于去除字符串開頭和結尾的空格。以下是一個示例:
SELECT TRIM(' Hello World ') AS trimmed_string;
輸出:
+-----------------+
| trimmed_string |
+-----------------+
| Hello World |
+-----------------+
在這個例子中,我們去除了字符串開頭和結尾的空格。
8、SUBSTRING
SUBSTRING函數用于提取字符串的一部分。以下是一個示例:
SELECT SUBSTRING('Hello World', 7, 5) AS substring;
輸出:
+-----------+
| substring |
+-----------+
| World |
+-----------+
在這個例子中,我們提取了從字符串的第7個字符開始的5個字符。
9、INSTR
INSTR函數用于返回一個字符串中第一次出現指定子字符串的位置。以下是一個示例:
SELECT INSTR('Hello World', 'World') AS position;
輸出:
+----------+
| position |
+----------+
| 7 |
+----------+
在這個例子中,我們返回了字符串'Hello World'中第一次出現子字符串'World'的位置,即第7個字符。
10、LOCATE
LOCATE函數用于返回一個字符串中指定子字符串第一次出現的位置。以下是一個示例:
SELECT LOCATE('World', 'Hello World') AS position;
輸出:
+----------+
| position |
+----------+
| 6 |
+----------+
在這個例子中,我們返回了字符串'Hello World'中子字符串'World'第一次出現的位置,即第6個字符。
11、LEFT和RIGHT
LEFT函數和RIGHT函數用于從字符串的左側或右側返回指定數量的字符。以下是一個示例:
SELECT LEFT('Hello World', 5) AS left_part, RIGHT('Hello World', 5) AS right_part;
輸出:
+-----------+------------+
| left_part | right_part |
+-----------+------------+
| Hello | World |
+-----------+------------+
在這個例子中,我們從字符串的左側返回了前5個字符,并從字符串的右側返回了最后5個字符。
12、LPAD和RPAD
LPAD函數和RPAD函數用于向字符串的左側或右側填充指定的字符,以便使其達到指定的長度。以下是一個示例:
SELECT LPAD('123', 5, '0') AS lpad_string, RPAD('123', 5, '0') AS rpad_string;
輸出:
+-------------+-------------+
| lpad_string | rpad_string |
+-------------+-------------+
| 00123 | 12300 |
+-------------+-------------+
在這個例子中,我們將字符串'123'使用0字符向左填充,使其長度達到5個字符,并將字符串'123'使用0字符向右填充,使其長度達到5個字符。