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