【问题标题】:Add new column in SQL and the string is from existing column在 SQL 中添加新列,字符串来自现有列
【发布时间】:2020-11-13 04:05:42
【问题描述】:

我的数据库中有这个名为test_type 的列。该列填充了类似于以下内容的字符串:

TP-ABC01-01-2700-W-003

我想创建一个名为test_type_no 的新列,并通过从test_type 列中提取一些字符串来填充新列。预期的字符串是:

ABC01-01

到目前为止,我已经尝试过:

alter table project_list 
    add column test_type_no varchar(255) 
         as (substring_index(substring_index(test_type, '-', 3), '-', -2))

但是syntax error at or near "as"的查询结果错误

我应该如何编写查询以使用预期的字符串创建新列?

【问题讨论】:

  • 您使用的是哪个 dbms?
  • 您是要添加非持久计算列、持久计算列还是预填充计算值的新普通列?
  • @TimBiegeleisen 确实如此。评论已删除:)

标签: sql alter-table


【解决方案1】:

如果您的 MySQL 数据库版本支持计算列(似乎是这种情况),那么只需定义列,然后对整个表进行更新:

ALTER TABLE project_list ADD COLUMN test_type_no VARCHAR(255);
UPDATE project_list
SET test_type_no = SUBSTRING_INDEX(SUBSTRING_INDEX(test_type, '-', 3), '-', -2);

话虽如此,鉴于您需要一个虚拟列,并且 test_type_no 确实是派生的,您可能只想在查询时选择它,或者创建一个视图,而不是上述方法。

【讨论】:

    猜你喜欢
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 2015-08-08
    • 2017-05-07
    相关资源
    最近更新 更多