根据值是不是是另一列的子字符串来更新列值

Posted

技术标签:

【中文标题】根据值是不是是另一列的子字符串来更新列值【英文标题】:Updating column value based on if the value is a substring of another column根据值是否是另一列的子字符串来更新列值 【发布时间】:2021-05-11 15:38:37 【问题描述】:

假设我在数据库中有两个表:

Table_1

Column_1  |  Column_2    | Column_3

1            End Table     NULL
2            BENQ Monitor  NULL
3            Tao Lamp      NULL

Table_2

Column_1 | Column_2

Table      Wooden Table 
Monitor    Computer Monitor          
Lamp       LED Lamp

我想通过检查 Table_1 中的 Column_2 是否包含子字符串来更新 Table_1 中的 Column_3 如下在 Column_1Table_2 中给出。

Column_1  |  Column_2    | Column_3

1            End Table     Wooden Table
2            BENQ Monitor  Computer Monitor
3            Tao Lamp      LED Lamp

我该怎么做呢?我已经尝试了以下方法,但它给了我一个“无效的标识符”错误。

UPDATE Table_1
SET Table_1.Column_3 = Table_2.Column_2
WHERE Table_1.Column_2 LIKE '%' + Table_2.Column_1 + '%';

感谢任何帮助。

【问题讨论】:

使用+进行拼接导致的错误。 Oracle 为此使用||两个竖线)。但是,在你修复它之后,你可能会得到错误的匹配 - 'Computer Training' 将匹配你对 'Train' 的任何内容('Toy Train' 或其他)。 感谢您的关注。关于您的第二点,Column_2 的输入值域,表 1 不应触发任何错误匹配,但请记住这一点当然很有用。 【参考方案1】:

您可以使用子查询:

UPDATE Table_1
    SET Table_1.Column_3 = (SELECT Table_2.Column_2
                            FROM Table_2
                            WHERE Table_1.Column_2 LIKE '%' || Table_2.Column_1 || '%'
                           );

【讨论】:

你的答案解决了一切问题——除了原始查询中的明显错误。 + 用于连接?在甲骨文中?

以上是关于根据值是不是是另一列的子字符串来更新列值的主要内容,如果未能解决你的问题,请参考以下文章

pyspark:删除作为另一列值的子字符串,并从给定列的值中包含正则表达式字符

根据另一列值更新数据框的列

mysql如何根据一列值更新另一列的值?

从另一列的子字符串更新一列

根据另一列的字段值选择具有相同列值的行

根据不同数据类型的另一列设置一列的默认值