2011-09-29 79 views
1

我有一个包含三列的表。如果另一列包含字符串,则更新列

column1  column2  column3 
mytestdata  test 
myotherdata test 

我想插入“somestring”到栏3,如果列1包含在列2的值

结果会是什么样子:

column1  column2  column3 
mytestdata  test  'somestring' 
myotherdata test 
+0

让我们知道RDBMS –

+0

如果column2以'%'开头或以'%'结尾,我很确定以下使用字符串连接的示例会失败 – egrunin

+0

您如何编辑标签,确保OPs RDBMS? –

回答

4

SQL服务器:

UPDATE myTable 
    SET column3 = 'somestring' 
WHERE column1 LIKE '%' + column2 + '%' 
+0

这是* not正确*。如果column1 ='3456'和column2 ='5%',它将匹配(它不应该)。 – egrunin

+0

它适用于我的情况,我的字符串中没有任何'5%'类型的字符。 – Blaze

0

你可以做类似下面

UPDATE tmp 
SET 
    column3 = (CASE WHEN tmp.column1 like '%' + tmp.column2 + '%' THEN 'something' ELSE tmp.column3') 
FROM 
    tablename tmp 
2

根据RDBMS,您有几个选项。

对于MySQL和甲骨文:

UPDATE yourTable 
set column3 = 'somestring' 
where INSTR(column2, column1) > 0 

对于SQL Server:

UPDATE yourTable 
set column3 = 'somestring' 
where CHARINDEX(column1, column2) > 0 
+0

如果column2 ='5%'会发生什么? – egrunin

+0

它也可以工作:其中column1与'%5 %%'相同,与'%5%'相同。我很确定有关sql服务器,我相信其他rdbms以相同的方式工作。 –

+0

更新了解决'%'潜在问题的答案 –

3

SQL服务器:

UPDATE theTable SET column3 = 'somestring' 
WHERE CHARINDEX (column2, column1) > 0 
相关问题