介绍
当您首先在 SQL 数据库中创建表时,您必须通过列出每一个列表所希望的表列表,以及这些表将存储的数据类型来定义其整体结构,然后,当您将数据添加到表中时,您插入的值必须与您为每个列定义的数据类型一致。
在本教程中,您将学习如何使用CAST
函数来操纵数据以将一个值或值组的数据类型更改为另一个,并使用连接表达式来连接字符和数字数据值。
前提条件
要完成本教程,您将需要:
- 运行 Ubuntu 20.04 的服务器,具有
sudo
管理权限和启用防火墙的非root用户。 按照我们的 Ubuntu 20.04 初始服务器设置来启动。 - MySQL 安装在服务器上并安全。 按照我们的 如何在 Ubuntu 20.04 上安装 MySQL指南来设置此设置。 此指南假定您还已设置了一个非 root MySQL 用户,如本指南的 步骤 3所述。
<$>[注] 注: 请注意,许多关系数据库管理系统使用自己的 SQL 独特实现,尽管本教程中描述的命令将在大多数 RDBMS 上工作,但如果您在 MySQL 以外的系统上测试它们,精确的语法或输出可能会有所不同。
要练习使用这个教程中的CAST
函数和连接表达式,你需要一个数据库和表载有样本数据. 如果你没有一个准备好插入,你可以阅读下面的 连接到MySQL和设置样本数据库部分,学习如何创建数据库和表。
连接到MySQL并设置样本数据库
如果您的 SQL 数据库在远程服务器上运行,则从本地计算机输入 SSH 到您的服务器:
1[environment local]
2ssh sammy@your_server_ip
接下来,打开MySQL提示,用您的MySQL用户帐户信息代替sammy
:
1mysql -u sammy -p
创建一个名为castconDB 的数据库:
1CREATE DATABASE castconDB;
如果数据库创建成功,您将收到以下输出:
1[secondary_label Output]
2Query OK, 1 row affected (0.01 sec)
要选择castconDB
数据库,运行以下USE
语句:
1USE castconDB;
1[secondary_label Output]
2Database changed
选择数据库后,在其中创建一个表. 对于本教程的示例,我们将创建一个表,其中包含弗兰克先生的六年级秋季学期课程的成绩。
学生_id': 显示
int` 数据类型的值,并将作为表格的 [_ prime key_] (https://www.digitalocean.com/community/conceptual_articles/understanding-sql-constraints#primary-key),表示本列中的每个值将作为各自行的唯一标识符。- "first_name":使用最多为20个字符的"varchar"数据类型来持有学生的名.
*
last_name':持有有
varchar'数据类型的学生的姓氏,最多为20个字符。 *电子邮件-地址':使用最多30个字符的
varchar'数据类型存储每个学生的电子邮件。 参与_级' : 以
int数据类型显示每个学生的总参与年级。 *
出勤-分级':使用'int'数据类型显示每个学生的出勤成绩. *中期-死亡':使用
TIMESTAMP'数据类型来表示每个学生必须在截止日期前提交中期考试。 此数据类型将日期和时间合并为一个字符串,并使用以下格式: ("YYY-MM-DD HH:MM:SS"). *中期-提交 ' :用
TIMESTAMP ' 数据类型记录学生提交中期考试的确切日期和时间。 *"中":用"十进制"数据类型来指定每个学生的中考成绩. 本列声明指定了4个精度并加分尺为一,这意味着本列中的值可以有4个位数,其中1个位数位于小数点的右边. *say_ deadline':显示学生必须使用
TIMESTAMP'数据类型提交论文的时间和日期。 *say-supply':使用
TIMESTAMP'数据类型跟踪学生提交作文任务的情况。说'级: 持有每个学生的作文分数,数据类型为"小数",精度为"四分"和"一分",后者为"小数点"之右. *
finalexam-deadline':使用TIMESTAMP'数据类型存储最终考试的截止日期信息。 *
finalexam_提交':使用`TIMESTAMP'数据类型来记录学生的期末考试实际提交时间和日期。 *'Finalexam_grade':包含每个学生在期末考试的分数,数据类型为"十进制",精度为被存储的4位数,分数为1位数到小数点右边. (英语)
创建一个名为fall_grades
的表,其中包含每个列,运行以下命令CREATE TABLE
:
1CREATE TABLE fall_grades (
2student_id int,
3first_name varchar(20),
4last_name varchar(20),
5email_address varchar(30),
6participation_grade int,
7attendance_grade int,
8midterm_deadline TIMESTAMP,
9midterm_submitted TIMESTAMP,
10midterm_grade decimal(4,1),
11essay_deadline TIMESTAMP,
12essay_submitted TIMESTAMP,
13essay_grade decimal(4,1),
14finalexam_deadline TIMESTAMP,
15finalexam_submitted TIMESTAMP,
16finalexam_grade decimal(4,1),
17PRIMARY KEY (student_id)
18);
接下来,将一些样本数据插入空表中:
1INSERT INTO fall_grades
2(student_id, first_name, last_name, email_address, participation_grade, attendance_grade, midterm_deadline, midterm_submitted, midterm_grade, essay_deadline, essay_submitted, essay_grade, finalexam_deadline, finalexam_submitted, finalexam_grade)
3VALUES
4(1, 'Arnold', 'Shortman', '[email protected]', 98, 90, '2022-10-16 12:00:00', '2022-10-16 06:30:00', 85.8, '2022-11-20 12:00:00', '2022-11-20 03:00:00', 90.1, '2022-12-11 12:00:00', '2022-12-11 03:00:00', 82.5),
5(2, 'Helga', 'Pataki', '[email protected]', 85, 100, '2022-10-16 12:00:00', '2022-10-16 10:00:00', 88.4, '2022-11-20 12:00:00', '2022-11-21 03:15:00', 72.5, '2022-12-11 12:00:00', '2022-12-11 05:00:00', 90.0),
6(3, 'Gerald', 'Johanssen', '[email protected]', 100, 95, '2022-10-16 12:00:00', '2022-10-16 02:00:00', 94.2, '2022-11-20 12:00:00', '2022-11-20 02:45:00', 95.8, '2022-12-11 12:00:00', '2022-12-11 11:00:00', 88.1),
7(4, 'Phoebe', 'Heyerdahl', '[email protected]', 100, 100, '2022-10-16 12:00:00', '2022-10-16 11:00:00', 98.8, '2022-11-20 12:00:00', '2022-11-20 11:15:00', 90.4, '2022-12-11 12:00:00', '2022-12-11 11:40:00', 100.0),
8(5, 'Harold', 'Berman', '[email protected]', 100, 75, '2022-10-16 12:00:00', '2022-10-16 08:00:00', 75.7, '2022-11-20 12:00:00', '2022-11-22 09:15:00', 67.5, '2022-12-11 12:00:00', '2022-12-11 09:15:00', 90.9),
9(6, 'Eugene', 'Horowitz', '[email protected]', 100, 100, '2022-10-16 12:00:00', '2022-10-16 01:00:00', 100.0, '2022-11-20 12:00:00', '2022-11-20 01:22:00', 89.9, '2022-12-11 12:00:00', '2022-12-11 07:55:00', 98.2),
10(7, 'Rhonda', 'Lloyd', '[email protected]', 100, 80, '2022-10-16 12:00:00', '2022-10-16 06:00:00', 90.4, '2022-11-20 12:00:00', '2022-11-20 06:09:00',81.3, '2022-12-11 12:00:00', '2022-12-11 06:45:00', 95.5),
11(8, 'Stinky', 'Peterson', '[email protected]', 100, 85, '2022-10-16 12:00:00', '2022-10-16 03:00:00', 70.6, '2022-11-20 12:00:00', '2022-11-20 05:55:00', 93.1, '2022-12-11 12:00:00', '2022-12-11 10:11:00', 73.2);
1[secondary_label Output]
2Query OK, 8 rows affected (0.01 sec)
3Records: 8 Duplicates: 0 Warnings: 0
一旦您输入了数据,您就可以开始学习如何在 SQL 中使用CAST
函数和连接表达式。
使用 CAST 函数
CAST
函数 允许您将字面值或列中的值转换为特定数据类型. 使用 CAST
函数可以帮助确保给定表达式中的值的数据类型兼容。
要使用CAST
命令,您必须指定包含您要转换的现有数据值的列(列),然后在表达式中输入您偏好的数据值或长度。
1[label CAST function syntax]
2. . .CAST(existing data value AS desired data value) . . .
但是,重要的是要注意,‘CAST’函数遵守某些规则,以便正常运行。例如,重要的是要确保您要转换的数据类型与您想要转换的数据类型兼容。 对于示例数据,您将无法将‘finalexam_grade’中的值从数字数据值(在这种情况下是‘十进制’数据类型)直接转换为字母等字符串值,例如使用‘CAST’函数。
重要的是要注意,在运行使用CAST
函数转换数据类型的查询时,不同的 SQL 实现程序会表现不同,例如,在 MySQL 中运行具有CAST
函数的查询可能会产生与在 PostgreSQL 中运行相同的查询不同的结果。
为了更好地了解您如何使用CAST
功能,请根据您在上一步中输入的样本数据来想象下面的场景:弗兰克先生是PS 118的六年级教师,正在准备提交秋季学期的成绩,他一直密切关注每个学生的进展,特别关心他们中期考试,论文和最终考试的成绩。
您将通过查询fall_grades
表来获取相关信息,例如学生的first_name
,last_name
,以及每个任务的成绩:
1SELECT first_name, last_name, midterm_grade, essay_grade, finalexam_grade FROM fall_grades;
1[secondary_label Output]
2+------------+-----------+---------------+-------------+-----------------+
3| first_name | last_name | midterm_grade | essay_grade | finalexam_grade |
4+------------+-----------+---------------+-------------+-----------------+
5| Arnold | Shortman | 85.8 | 90.1 | 82.5 |
6| Helga | Pataki | 88.4 | 72.5 | 90.0 |
7| Gerald | Johanssen | 94.2 | 95.8 | 88.1 |
8| Phoebe | Heyerdahl | 98.8 | 90.4 | 100.0 |
9| Harold | Berman | 75.7 | 67.5 | 90.9 |
10| Eugene | Horowitz | 100.0 | 89.9 | 98.2 |
11| Rhonda | Lloyd | 90.4 | 81.3 | 95.5 |
12| Stinky | Peterson | 70.6 | 93.1 | 73.2 |
13+------------+-----------+---------------+-------------+-----------------+
148 rows in set (0.00 sec)
在将此结果设置给弗兰克先生后,他解释说,他正在使用的系统只允许他输入整数级别,并且需要将这些十进制数据值转换。
对于此查询,使用上一个示例的语法,但包括一个CAST
函数将十进制
数据类型转换为每个分级任务的两个字符. 您将在三个不同的表达式中实现一个CAST
函数(为midterm_grade
,essay_grade
和finalexam_grade
)将其转换为仅有 2 个字符数据值:
1SELECT first_name, last_name,
2CAST(midterm_grade AS char(2)) AS midterm,
3CAST(essay_grade AS char(2)) AS essay,
4CAST(finalexam_grade AS char(2)) AS finalexam
5FROM fall_grades;
1[secondary_label Output]
2+------------+-----------+---------+-------+-----------+
3| first_name | last_name | midterm | essay | finalexam |
4+------------+-----------+---------+-------+-----------+
5| Arnold | Shortman | 85 | 90 | 82 |
6| Helga | Pataki | 88 | 72 | 90 |
7| Gerald | Johanssen | 94 | 95 | 88 |
8| Phoebe | Heyerdahl | 98 | 90 | 10 |
9| Harold | Berman | 75 | 67 | 90 |
10| Eugene | Horowitz | 10 | 89 | 98 |
11| Rhonda | Lloyd | 90 | 81 | 95 |
12| Stinky | Peterson | 70 | 93 | 73 |
13+------------+-----------+---------+-------+-----------+
148 rows in set, 24 warnings (0.00 sec)
在审查每个学生的成绩后,弗兰克先生问你是否可以提取有关每个学生提交任务的确切日期和时间的信息。
若要获取此数据,请运行以下SELECT
语句:
1SELECT first_name, last_name, midterm_deadline, essay_deadline, finalexam_deadline FROM fall_grades;
1[secondary_label Output]
2+------------+-----------+---------------------+---------------------+---------------------+
3| first_name | last_name | midterm_deadline | essay_deadline | finalexam_deadline |
4+------------+-----------+---------------------+---------------------+---------------------+
5| Arnold | Shortman | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 |
6| Helga | Pataki | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 |
7| Gerald | Johanssen | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 |
8| Phoebe | Heyerdahl | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 |
9| Harold | Berman | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 |
10| Eugene | Horowitz | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 |
11| Rhonda | Lloyd | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 |
12| Stinky | Peterson | 2022-10-16 12:00:00 | 2022-11-20 12:00:00 | 2022-12-11 12:00:00 |
13+------------+-----------+---------------------+---------------------+---------------------+
148 rows in set (0.00 sec)
在审查此输出后,弗兰克先生叹息并告诉您这些信息太难分析了. 这些列都设置为存储TIMESTAMP
值,这就是为什么它们非常长的原因。
若要仅查询学生提交任务的时间,请运行CAST
,并指定您希望从该特定列的数据值被转换为时间
值:
1SELECT first_name, last_name,
2CAST(midterm_submitted AS time) AS midterm,
3CAST(essay_submitted AS time) AS essay,
4CAST(finalexam_submitted AS time) AS finalexam
5FROM fall_grades;
1[secondary_label Output]
2+------------+-----------+----------+----------+-----------+
3| first_name | last_name | midterm | essay | finalexam |
4+------------+-----------+----------+----------+-----------+
5| Arnold | Shortman | 06:30:00 | 03:00:00 | 03:00:00 |
6| Helga | Pataki | 10:00:00 | 03:15:00 | 05:00:00 |
7| Gerald | Johanssen | 02:00:00 | 02:45:00 | 11:00:00 |
8| Phoebe | Heyerdahl | 11:00:00 | 11:15:00 | 11:40:00 |
9| Harold | Berman | 08:00:00 | 09:15:00 | 09:15:00 |
10| Eugene | Horowitz | 01:00:00 | 01:22:00 | 07:55:00 |
11| Rhonda | Lloyd | 06:00:00 | 06:09:00 | 06:45:00 |
12| Stinky | Peterson | 03:00:00 | 05:55:00 | 10:11:00 |
13+------------+-----------+----------+----------+-----------+
148 rows in set (0.00 sec)
此输出提供了每个学生完成任务的时间框架的概述。你记得每个任务在午夜的星期天到来。 一些学生与他们的时间一致,而其他学生早些时候完成,或者在午夜截止日期之前稍微完成。
然而,这只是弗兰克先生要求的信息的一半,所以让我们来处理下一个查询,该查询将使用CAST
函数将相同的TIMESTAMP
值转换为date
值。
1SELECT first_name, last_name,
2CAST(midterm_submitted AS date) AS midterm,
3CAST(essay_submitted AS date) AS essay,
4CAST(finalexam_submitted AS date) AS finalexam
5FROM fall_grades;
1[secondary_label Output]
2+------------+-----------+------------+------------+------------+
3| first_name | last_name | midterm | essay | finalexam |
4+------------+-----------+------------+------------+------------+
5| Arnold | Shortman | 2022-10-16 | 2022-11-20 | 2022-12-11 |
6| Helga | Pataki | 2022-10-16 | 2022-11-21 | 2022-12-11 |
7| Gerald | Johanssen | 2022-10-16 | 2022-11-20 | 2022-12-11 |
8| Phoebe | Heyerdahl | 2022-10-16 | 2022-11-20 | 2022-12-11 |
9| Harold | Berman | 2022-10-16 | 2022-11-22 | 2022-12-11 |
10| Eugene | Horowitz | 2022-10-16 | 2022-11-20 | 2022-12-11 |
11| Rhonda | Lloyd | 2022-10-16 | 2022-11-20 | 2022-12-11 |
12| Stinky | Peterson | 2022-10-16 | 2022-11-20 | 2022-12-11 |
13+------------+-----------+------------+------------+------------+
148 rows in set (0.00 sec)
基于此结果,您可以识别哪些学生在截止日期后返回他们的任务,以及为什么他们的分数可能受到影响,因为为延迟提供了更少的分数。
虽然弗兰克先生对这些清理结果感到满意,但他需要更多的帮助来进一步阐述数据,以便他的评级报告。在下一节中,您将练习使用连接表达式,这些表达式可以将多个字母值或列值合并成一个字符串值,有助于使信息更清晰地解释为一个完整的陈述或句子。
使用 Concatenation 表达式
使用 _concatenation 表达式 CONCAT
,您可以通过将不同列中的字符或数值汇合到单个结果中来操纵数据。
通常情况下,SQL 数据库会单独返回结果集中的数据值,例如,如果您要查询 PS 118 学生的first_name
和last_name
,输出将显示如下:
1SELECT first_name, last_name FROM fall_grades;
1[secondary_label Output]
2+------------+-----------+
3| first_name | last_name |
4+------------+-----------+
5| Arnold | Shortman |
6| Helga | Pataki |
7| Gerald | Johanssen |
8| Phoebe | Heyerdahl |
9| Harold | Berman |
10| Eugene | Horowitz |
11| Rhonda | Lloyd |
12| Stinky | Peterson |
13+------------+-----------+
148 rows in set (0.00 sec)
但是,这些信息并非以弗兰克先生对报告的偏好方式进行格式化。让我们使用连接来执行另一个查询,将学生的第一名和最后名称合并成一个字符串。
1SELECT CONCAT(first_name, last_name) AS full_names FROM fall_grades;
1[secondary_label Output]
2+-----------------+
3| full_names |
4+-----------------+
5| ArnoldShortman |
6| HelgaPataki |
7| GeraldJohanssen |
8| PhoebeHeyerdahl |
9| HaroldBerman |
10| EugeneHorowitz |
11| RhondaLloyd |
12| StinkyPeterson |
13+-----------------+
148 rows in set (0.00 sec)
缩小表达式通常适用于所有数据类型,但如果您不指定数据值之间的间隔等细节,输出将显示为单个字符串中的运行,正如此输出所示。
1SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM fall_grades;
1[secondary_label Output]
2+------------------+
3| full_name |
4+------------------+
5| Arnold Shortman |
6| Helga Pataki |
7| Gerald Johanssen |
8| Phoebe Heyerdahl |
9| Harold Berman |
10| Eugene Horowitz |
11| Rhonda Lloyd |
12| Stinky Peterson |
13+------------------+
148 rows in set (0.00 sec)
通过在查询中包含单个引文之间的空间,输出现在将学生的名字显示为两个单独的单词,而不是一个组合的单词。
<$>[注] 注: 最现代的关系 DBMS 使用本节中描述的语法来连接值,但是,这个语法(‘CONCAT’关键字)不是 SQL 标准定义的传统语法。
在 SQL 中将值连接的传统方法是将一对垂直栏放置在您想要连接的数据值之间。MySQL不允许您使用此语法,但一些DBMS,如PostgreSQL,允许您使用任何方法。
1SELECT first_name || ' ' || last_name AS full_name
2FROM fall_grades;
1[secondary_label Output]
2 full_name
3------------------
4 Arnold Shortman
5 Helga Pataki
6 Gerald Johanssen
7 Phoebe Heyerdahl
8 Harold Berman
9 Eugene Horowitz
10 Rhonda Lloyd
11 Stinky Peterson
12(8 rows)
美元
现在让我们尝试另一个例子,我们将获取有关每个学生的更多信息。这次,我们要将first_name
,last_name
,e-mail_address
,finalexam_grade
和finalexam_submitted
数据值连接到一个单一的列中,使用CONCAT
。
1SELECT CONCAT(first_name, ' ', last_name, ' ',
2email_address, ' ', finalexam_grade, ' ', finalexam_submitted)
3AS student_info FROM fall_grades;
1[secondary_label Output]
2+-----------------------------------------------------------------+
3| student_info |
4+-----------------------------------------------------------------+
5| Arnold Shortman [email protected] 82.5 2022-12-11 03:00:00 |
6| Helga Pataki [email protected] 90.0 2022-12-11 05:00:00 |
7| Gerald Johanssen [email protected] 88.1 2022-12-11 11:00:00 |
8| Phoebe Heyerdahl [email protected] 100.0 2022-12-11 11:40:00 |
9| Harold Berman [email protected] 90.9 2022-12-11 09:15:00 |
10| Eugene Horowitz [email protected] 98.2 2022-12-11 07:55:00 |
11| Rhonda Lloyd [email protected] 95.5 2022-12-11 06:45:00 |
12| Stinky Peterson [email protected] 73.2 2022-12-11 10:11:00 |
13+-----------------------------------------------------------------+
148 rows in set (0.00 sec)
弗兰克对这些结果感到满意,但他希望通过转换某些数据值来更简化他的评级报告。在这种情况下,您将使用CAST
函数将finalexam_grade
数据类型转换为整数,而使用TIMESTAMP
数据类型的finalexam_submitted
将转换为date
值,如下所示:
1SELECT CONCAT(first_name, ' ', last_name, ' ', email_address, ' ',
2CAST(finalexam_grade AS char(2)), ' ',
3CAST(finalexam_submitted AS date))
4AS student_info FROM fall_grades;
1[secondary_label Output]
2+-----------------------------------------------------+
3| student_info |
4+-----------------------------------------------------+
5| Arnold Shortman [email protected] 82 2022-12-11 |
6| Helga Pataki [email protected] 90 2022-12-11 |
7| Gerald Johanssen [email protected] 88 2022-12-11 |
8| Phoebe Heyerdahl [email protected] 10 2022-12-11 |
9| Harold Berman [email protected] 90 2022-12-11 |
10| Eugene Horowitz [email protected] 98 2022-12-11 |
11| Rhonda Lloyd [email protected] 95 2022-12-11 |
12| Stinky Peterson [email protected] 73 2022-12-11 |
13+-----------------------------------------------------+
148 rows in set, 8 warnings (0.00 sec)
让我们进一步一步,写一个使用CAST
函数和连接表达式的查询,以输出完整的句子。您可以通过在单个引文之间写短语句来做到这一点。
1SELECT CONCAT(first_name, ' ', last_name, ' can be contacted at ', email_address,
2' and received a grade of ',
3CAST(finalexam_grade AS char(2)),
4' after submitting the final exam on ',
5CAST(finalexam_submitted AS date))
6AS student_info FROM fall_grades;
1[secondary_label Output]
2+------------------------------------------------------------------------------------------------------------------------------------+
3| student_info |
4+------------------------------------------------------------------------------------------------------------------------------------+
5| Arnold Shortman can be contacted at [email protected] and received a grade of 82 after submitting the final exam on 2022-12-11 |
6| Helga Pataki can be contacted at [email protected] and received a grade of 90 after submitting the final exam on 2022-12-11 |
7| Gerald Johanssen can be contacted at [email protected] and received a grade of 88 after submitting the final exam on 2022-12-11 |
8| Phoebe Heyerdahl can be contacted at [email protected] and received a grade of 10 after submitting the final exam on 2022-12-11 |
9| Harold Berman can be contacted at [email protected] and received a grade of 90 after submitting the final exam on 2022-12-11 |
10| Eugene Horowitz can be contacted at [email protected] and received a grade of 98 after submitting the final exam on 2022-12-11 |
11| Rhonda Lloyd can be contacted at [email protected] and received a grade of 95 after submitting the final exam on 2022-12-11 |
12| Stinky Peterson can be contacted at [email protected] and received a grade of 73 after submitting the final exam on 2022-12-11 |
13+------------------------------------------------------------------------------------------------------------------------------------+
148 rows in set, 8 warnings (0.00 sec)
这个输出结果是关于弗兰克先生的班级中的每个学生的完整句子. 单个引用之间的这些小额外加载使得很明显的信息是关于谁和他们的数据。 这是因为您在查询中从特定列中获取的数据。 弗兰克先生无法足够感谢您的令人难以置信的工作。 他非常高兴你甚至通过写出完整的句子来节省了他的时间,他可以快速输入他的报告。
结论
本指南解释了使用CAST
函数和连接表达式操纵数据的各种用例。使用CAST
函数,您练习将一个数据类型的列转换为另一个。此外,您还学会了如何使用连接表达式将不同的数据值,无论是字符还是数值,合并到一个字符串中。您还在同一个查询中执行了CAST
函数和连接表达式,以生成提供有关数据值的更多背景的完整句子。