如何在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中将两列连接成一个新列?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server 中将多行文本连接成单个文本字符串