1、【MySQL】合并字段函數(列轉行)
它可以將兩個字段中的數據合并到一個字段中。
1)CONCAT函數
CONCAT函數可以將多個字段中的數據合并到一個字段中。它的語法格式如下:
SELECT CONCAT(字段1,字段2,...字段N) FROM 表名;SELECT CONCAT(name,age) FROM stu;
2)CONCAT_WS函數
CONCAT_WS函數是可以將多個字段中的數據合并到一個字段中,并且在合并的過程中可以指定分隔符。它的語法格式如下:
SELECT CONCAT_WS(分隔符,字段1,字段2,...字段N) FROM 表名;SELECT CONCAT_WS('-',name,age) FROM stu;
3)GROUP_CONCAT函數
GROUP_CONCAT函數可以將多個字段中的數據合并到一個字段中,并且在合并的過程中可以指定分隔符,而且它還可以根據指定的字段進行分組,從而使得合并的數據更加有序。它的語法格式如下:
SELECT GROUP_CONCAT(字段1,字段2,...字段N ORDER BY 字段 SEPARATOR 分隔符) FROM 表名;SELECT GROUP_CONCAT(name,age ORDER BY age SEPARATOR '-') FROM stu;
2、【MySQL】LOCATE函數詳解
用于返回子字符串在主字符串中第一次出現的位置。如果子字符串不存在于主字符串中,函數將返回?0
。位置索引從?1
?開始計數。它的語法格式如下:
LOCATE(substring, string, start)#返回所有電子郵件地址包含 '@example.com' 的數據
SELECT name FROM stuWHERE LOCATE('@example.com', email) > 0;
substring
:需要查找的子字符串。string
:主字符串,搜索的目標字符串。start
(可選):指定從主字符串的哪個位置開始搜索。默認為?1
,即從字符串開頭開始。
注意:
1、該函數大小寫敏感
2、在處理大量數據時,頻繁使用?
LOCATE
?函數可能會影響查詢性能。3、如果傳遞給?
LOCATE
?函數的任何參數為?NULL
,函數將返回?NULL
4、
在多字節字符集中,LOCATE
?函數可能需要正確處理字符編碼,以確保準確定位
與其他函數相比較
LOCATE
?和?INSTR
?都用于查找子字符串的位置,區別在于參數順序和某些實現細節。FIND_IN_SET
?和?FIELD
?更適用于查找列表中的元素位置,而不是子字符串在字符串中的位置。
未完待續(用到時刻補充)。。。