MySQL CONCAT() 函数
MySQL CONCAT() 函数用于将两个或多个字符串连接成一个字符串。
它接受两个或多个 string 值作为输入,并按输入顺序连接所有输入字符串,返回一个字符串。
如果输入为非二进制字符串,则返回一个非二进制字符串。
如果输入为二进制字符串,则返回一个二进制字符串。
如果输入为数值,则将其转换为等效的非二进制字符串形式。
处理 MySQL 表时,此函数在各种场景中都很有用,例如将一个人的名字和姓氏组合成一个全名,使用分隔符(例如 (" ")、(-)、(,) 等。
语法
以下是 MySQL CONCAT() 函数的语法 -
CONCAT(str1,str2,...)
参数
此函数接受多个字符串值作为参数。
返回值
此函数返回给定字符串值的串联结果,并将它们组合成一个字符串。
示例
在此示例中,我们使用 CONCAT() 函数串联两个字符串"tutorials"和"point" -
SELECT CONCAT('tutorials', 'point');
以下是上述代码的输出 -
| CONCAT('tutorials', 'point') |
|---|
| tutorialspoint |
示例
以下是另一个示例,我们仅向 CONCAT() 函数传递一个参数 -
SELECT CONCAT('test');
以上代码的输出如下所示 -
| CONCAT('test') |
|---|
| test |
示例
您也可以通过传递两个以上的参数来进行连接 -
SELECT CONCAT('Shyam', 'Singa', 'Roy');
输出结果如下 -
| CONCAT('Shyam', 'Singa', 'Roy') |
|---|
| ShyamSingaRoy |
示例
如果将二进制字符串作为参数传递给此函数,它将返回一个二进制字符串 -
SELECT CONCAT('110110', '1100110');
结果如下 -
| CONCAT('110110', '1100110') |
|---|
| 1101101100110 |
示例
类似地,如果您传递非二进制值作为参数,它将返回一个非二进制字符串 -
SELECT CONCAT('sample', 'test');
我们得到如下输出 −
| CONCAT('sample', 'test') |
|---|
| sampletest |
示例
您还可以组合二进制和非二进制值,并将其作为参数传递给此函数 −
SELECT CONCAT('sample', 1010011);
得到的输出如下所示 −
| CONCAT('sample', 1010011) |
|---|
| sample1010011 |
示例
当你传递一个数值作为参数时,CONCAT() 函数会将其转换为等效的非二进制字符串形式 -
SELECT CONCAT(1125, 225, 669);
结果如下 -
| CONCAT(1125, 225, 669) |
|---|
| 1125225669 |
示例
如果将空字符串作为参数传递给 CONCAT() 函数,它将返回 '0' -
SELECT CONCAT('');
我们得到如下输出 -
| CONCAT('') |
|---|
| 0 |
示例
如果传递给 CONCAT() 函数的其中一个参数为 NULL,则结果也将为 NULL -
SELECT CONCAT(1125, 225, NULL);
以下是上述代码的输出 -
| CONCAT(1125, 225, NULL) |
|---|
| NULL |
示例
您还可以将表的列名作为参数传递给此函数,并连接/合并给定列中的值。
让我们创建一个名为"PLAYERS"的表,并使用 CREATE 和 INSERT 语句向其中插入记录,如下所示 -
CREATE TABLE PLAYERS( ID INT, First_Name VARCHAR(255), Last_Name VARCHAR(255), Date_Of_Birth date, Place_Of_Birth VARCHAR(255), Country VARCHAR(255), PRIMARY KEY (ID) );
现在,让我们使用 INSERT 语句将记录插入其中 -
INSERT INTO PLAYERS VALUES
(1, 'Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India'),
(2, 'Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica'),
(3, 'Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka'),
(4, 'Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India'),
(5, 'Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India'),
(6, 'James', 'Anderson', DATE('1982-06-30'), 'Burnley', 'England');
获得的PLAYERS表如下-
| ID | First_Name | Last_Name | Date_Of_Birth | Place_Of_Birth | Country |
|---|---|---|---|---|---|
| 1 | Shikhar | Dhawan | 1981-12-05 | Delhi | India |
| 2 | Jonathan | Trott | 1981-04-22 | CapeTown | SouthAfrica |
| 3 | Kumara | Sangakkara | 1977-10-27 | Matale | Srilanka |
| 4 | Virat | Kohli | 1988-11-05 | Delhi | India |
| 5 | Rohit | Sharma | 1987-04-30 | Nagpur | India |
| 6 | James | Anderson | 1982-06-30 | Burnley | England |
以下查询连接/联结 PLAYERS 表中的 First_Name 和 Last_Name 值,并将结果显示为 FullName -
SELECT CONCAT (First_Name, Last_Name) as FullName, Country FROM PLAYERS;
输出
执行上述代码后,我们得到以下输出 -
| FullName | Country |
|---|---|
| ShikharDhawan | India |
| JonathanTrott | SouthAfrica |
| KumaraSangakkara | Srilanka |
| ViratKohli | India |
| RohitSharma | India |
| JamesAnderson | England |
示例
此处,我们使用以下查询连接超过两列,即"First_name"、"Last_name"和"Country" -
SELECT CONCAT (First_Name, " ", Last_Name, " ", Country) as FullName_and_Country FROM PLAYERS;
输出
显示的输出如下所示 -
| FullName_and_Country |
|---|
| Shikhar Dhawan India |
| Jonathan Trott SouthAfrica |
| Kumara Sangakkara Srilanka |
| Virat Kohli India |
| Rohit Sharma India |
| James Anderson England |
mysql-concat-function.html