根据值是不是是另一列的子字符串来更新列值
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_1、Table_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 || '%'
);
【讨论】:
你的答案解决了一切问题——除了原始查询中的明显错误。+
用于连接?在甲骨文中?以上是关于根据值是不是是另一列的子字符串来更新列值的主要内容,如果未能解决你的问题,请参考以下文章