gpt4 book ai didi

mysql - 在表中添加一列,其中包含该行的 2 个字段的串联结果

转载 作者:行者123 更新时间:2023-11-29 08:35:41 24 4
gpt4 key购买 nike

我在一些我认为一定很简单的事情上遇到了一些麻烦。

我有一个表,其中包含:

CREATE TABLE cities(  
city_id INT PRIMARY KEY,
city_article TEXT,
city_name TEXT
);

因此,city_name 是一个简单的字段,例如“PARIS”或“NEW YORK”等名称。city_article 大部分是空的,除了一些城市(例如法国城市)需要在它们前面添加一篇文章,例如“LA ROCHELLE”,它在数据库中设置为city_article = '洛杉矶'city_name = '罗谢尔'

我想创建一个新列,其中包含 city_article 和 city_name 的串联,并用“-”分隔,并用相同的“-”替换每个空格。

因此,如果我们将“THE NEW YORK”这样的内容分开城市_文章 = 'THE'city_name = '纽约'

第三列是city_concatenated = '纽约'

诀窍是,由于并非所有城市都有文章,我不希望像“PARIS”这样的城市在操作后变成“-PARIS”。

有没有一种方法可以轻松做到这一点?

TL;DR:如何创建一个新列,其中包含另外 2 列的结果,其中一列可以为 NULL,另一列必须将每个空格替换为“-”,而不将“-”放在不存在的位置由于缺少第一个字段而需要。

最佳答案

我不确定 City_article 中是否可以有空字符串,但我假设这种情况可能会发生:

SELECT  CONCAT(CASE WHEN City_Article = '' OR City_Article IS NULL THEN '' ELSE CONCAT(City_Article, '-') END, REPLACE(city_name, ' ', '-'))
FROM Cities;

就将其添加为列而言,我不会。由于 MySQL 不允许计算列,我建议创建一个存储该列的定义的 View 。这可确保全名始终是最新的,并且如果更新文章或城市名称,则不需要更新附加列:

CREATE VIEW Cities_Ext 
AS
SELECT City_ID,
City_Article,
City_Name,
CONCAT(CASE WHEN City_Article = '' OR City_Article IS NULL THEN '' ELSE CONCAT(City_Article, '-') END,REPLACE(city_name, ' ', '-')) AS FullName
FROM Cities;

<强> Example on SQL Fiddle

关于mysql - 在表中添加一列,其中包含该行的 2 个字段的串联结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15299428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com