如何在sql中将两列连接成一个新列?

Posted

技术标签:

【中文标题】如何在sql中将两列连接成一个新列?【英文标题】:How to concatenate two columns into a new one in sql? 【发布时间】:2018-10-15 14:11:34 【问题描述】:

我在将两列合并为一个新列时遇到问题。我只想将列 IBAN 和 Currency_code 连接到 CheckSum 中。当我创建 SELECT * 时,它就会出现。

DROP TABLE IF EXISTS transaccio;
CREATE TABLE transaccio (
   IBAN varchar(255),
   Currency_code varchar (255),
   CheckSum varchar(255)
);

我提出了两个选择,但没有一个可行。

选项一:

INSERT INTO transaccio(CheckSum) SELECT (CONCAT(IBAN, Currency_code)) FROM transaccio;

选项二:(它说不知道从哪里得到 IBAN 和 Currency_code)

INSERT INTO transaccio(CheckSum) VALUES (CONCAT(IBAN, Currency_code));

【问题讨论】:

哪个数据库 mysql 或 PostgreSQL?但两者都应该支持 CONCAT 功能。 试试INSERT INTO transaccio(CheckSum, IBAN, Currency_code) VALUES (CONCAT(IBAN, Currency_code), 'IBAN', 'Currency_code');.. 但是从这个问题很难理解你是否正在寻找更新查询的插入.. 除了我想知道您是否真的想为货币系统生成如此简单的 geuss 校验和。 对不起,我是新人哈哈,完了! 【参考方案1】:

您需要使用Update 查询而不是Insert

UPDATE transaccio 
SET CheckSum = CONCAT(IBAN, Currency_code);

但这似乎是一个Generated Column 问题。根据您的 MySQL 版本,您可以改用生成的列。

PostgreSQL本身不支持生成列/虚拟列。您可以参考这个答案:https://dba.stackexchange.com/a/183265/27070 在 PostgreSQL 中模拟它们

【讨论】:

为了更好地解决这个问题,PostgreSQL 本身不支持生成列/虚拟列这是dba.stackexchange.com/a/183265/27070 在 PostgreSQL 中模拟生成列/虚拟列的方式.. @RaymondNijland 请随时编辑答案并添加这个非常有趣的信息 @PedroGarcía-Mauriño 乐于提供帮助 :)【参考方案2】:

您将需要 UPDATE 语句:

UPDATE transaccio
SET CheckSum = CONCAT(IBAN, Currency_code);

【讨论】:

以上是关于如何在sql中将两列连接成一个新列?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Hive 中将一列拆分为两列

如何在 SQL Server 中将多行文本连接成单个文本字符串

SQL - 对两个表中的两列求和并写入新列

sql查询中,如何将某列 分成 两列。

如何在 Sqlite 中将两列合二为一,同时获取外键的底层值?

SQL中如何将两列拼接