SQL CONCAT简介及实例

1,154 阅读4分钟

SQL CONCAT

SQL CONCAT简介

CONCAT()是标准查询语言(SQL)中的一个字符串函数,用于连接或合并两个或多个在函数中指定为参数的字符串。然而,在连接时,NULL参数会被忽略。因此,该函数有助于以更可读的格式呈现数据字段。在一些SQL数据库中还有一个CONCAT()函数的版本,叫做CONCAT_WS(),其中所有指定的参数(NULL值除外)都像CONCAT()一样被连接起来,但不同的是第一个参数被视为分隔符。

我们甚至可以使用"||"操作符将两个或多个字符串连接成一个。CONCAT()函数与'||'运算符的区别在于,该运算符不忽略空参数。

语法和参数

在SQL中使用CONCAT()函数的基本语法如下。

CONCAT(str_1, str_2, str_3, ...)

语法中使用的参数是。

  • **str_1, str_2, str_3, ... :**这是要串联在一起的参数列表。CONCAT()函数的参数必须是可转换的字符串类型,例如Text、VARCHAR、CHAR等。

CONCAT_WS()函数的语法如下。

CONCAT_WS(separator,str_1, str_2, str_3, ...);

上述语法中使用的参数如下。

  • **分隔符。**第一个参数被认为是一个分隔符,它将分隔后续的参数。

其余的参数与CONCAT()函数类似。

在讨论了SQL中CONCAT()函数的语法和参数后,让我们深入研究并尝试一些基于它的例子。

SQL CONCAT的例子

下面是一些基本的例子,说明了CONCAT()和CONCAT_WS()函数的使用。

例子#1

用SQL查询来说明CONCAT()函数。

代码。

SELECT CONCAT ('THIS',' ','IS',' ','AN',' ', 'EXAMPLE');

输出。

SQL CONCAT output 1

例子 #2

用SQL查询来说明CONCAT_WS()函数的使用。

代码。

SELECT   CONCAT_WS (',','APPLE','BANANA','ORANGES','GRAPES')   AS FRUITS_BASKET;

输出。

SQL CONCAT output 2

例子 #3

用来说明连接运算符||的SQL查询。

代码。

SELECT 'Hello' || ' ' || 'There' AS concatenated_string;

输出。

SQL CONCAT output 3

为了说明CONCAT()和CONCAT_WS()函数的用途,让我们创建一个名为 "学生 "的假表。这个表包含学生的名字、姓氏和出生日期等详细信息。例如,我们可以使用下面的代码片段来创建 "学生 "表。

CREATE TABLE students
(
student_id integer NOT NULL GENERATED BY DEFAULT AS IDENTITY,
first_name character varying(255) NOT NULL,
last_name character varying(255) NOT NULL,
birth_date date NOT NULL,
PRIMARY KEY (student_id)
);

我们已经成功创建了 "学生 "表。现在让我们在其中插入一些记录来处理。使用下面这段代码来插入数值。

INSERT INTO students(student_id, first_name, last_name, birth_date)
VALUES(1,'Kritika','Sharma', TO_DATE('May 01 2000','Mon DD YYYY'));
INSERT INTO students(student_id, first_name, last_name, birth_date)
VALUES(2,'Rohit','Verma', TO_DATE('070798','MMDDYY'));
INSERT INTO students(student_id, first_name, last_name, birth_date)
VALUES(3,'Ariel','Winter', TO_DATE('2001-02-20 13:27:18', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO students(student_id, first_name, last_name, birth_date)
VALUES(4,'Mathew','Jones', TO_DATE('2020-52-5', 'IYYY-IW-ID'));
select * from students;

插入记录后的最终表看起来像这样。

SQL CONCAT output 3.2

我们现在可以在这个表的基础上尝试一些例子了。

例子 #4

学生的名字以first_name和last_name的形式存储在学生表中。我们的任务是将一个学生的名字显示为一个字段,而不是两个字段。

代码。

SELECT CONCAT(first_name, ' ', last_name) as student_name   FROM students;

输出。

SQL CONCAT output 4

这里我们使用了CONCAT()函数来连接first_name、last_name和空格,以返回学生的全名。

例子 #5

假设我们要显示一个学生的全名和他的年龄。年龄应该以句子的形式声明,如 "Kritika的年龄是20岁"。

代码。

SELECT CONCAT(first_name,' ',last_name),
CONCAT('Age of ', first_name,' is ',
EXTRACT(Year FROM '2020-06-01' ::date)- EXTRACT(Year FROM birth_date :: date))
FROM students;

输出。

output 5

在这个例子中,我们首先推断出了一个学生的年龄,然后用CONCAT()函数将其与其余的字符串连接起来。

例子#6

假设我们要显示一个学生的全名,格式是first_name和last_name一起显示,但用逗号分开。

代码。

SELECT CONCAT_WS(' , ',first_name,last_name) as comma_separated   FROM students;

输出。

output 6

这个例子很容易理解,因为我们在这里只是复制了例子2,唯一的区别是,在那里我们有水果的名字作为参数,而在这里我们有first_name和last_name。

例子#7

假设我们要找到班上两个最大的学生。同时,我们必须在一个句子中显示出最年长学生的名字,并以逗号作为分隔符。

代码。

SELECT CONCAT('The eldest students are ',
CONCAT_WS(' , ', first_name,
LEAD(first_name,1) OVER
(ORDER BY birth_date ASC)))
FROM students
ORDER BY birth_date ASC
LIMIT 1;

输出。

output 7

在这里,我们首先使用ORDER BY和LEAD函数分别找到了最大和次大的学生的名字。接下来,我们使用CONCAT()和CONCAT_WS()函数将得到的结果连接起来。

例子#8

假设我们要显示所有学生的全名,但我们不允许使用CONCAT()和CONCAT_WS()函数。

代码。

SELECT (first_name || ' ' || last_name) as student_name   FROM students;

输出。

output 8

在这种情况下,我们可以使用连接运算符'||'将first_name和last_name字段连接起来。

总结

像CONCAT()和CONCAT_WS()这样的函数在SQL中被用来将两个或多个可转换的字符串参数连接成一个字段。它在显示结果时非常有用,使其对普通人来说易于阅读。

推荐文章

这是一个关于SQL CONCAT的指南。这里我们讨论了SQL CONCAT的例子,说明了CONCAT()和CONCAT_WS()函数的使用。你也可以看看下面的文章,以了解更多信息

  1. MySQL REGEXP
  2. PostgreSQL的真空
  3. MySQL的REPLACE
  4. PostgreSQL的UNIQUE索引