WHERE子句中的SQL CONCAT字符串+列

时间:2014-08-03 20:46:55

标签: mysql sql concatenation where

我在Foo.A中得到了一个数值,它在Bar中具有等价但是带有字符串前缀(" Z")。我试图追加" Z"到Bar.A col值。我也试过CONCAT但没有成功。以下代码返回"未知列Z"。

UPDATE Foo, Bar
SET Foo.B = Bar.B
WHERE Foo.A = Z + Bar.A

例如14(Foo.A)= Z14(Bar.A)。

4 个答案:

答案 0 :(得分:3)

如果您的语法有效,那么很可能您正在使用MySQL。在任何情况下,问题是你需要围绕字符串常量引用。所以试试这个:

UPDATE Foo join
       Bar
       on Foo.A = concat('Z', Bar.A)
    SET Foo.B = Bar.B;

无论数据库如何,您都应该始终对字符串和日期常量使用单引号。这是ANSI标准,它减少了出错的可能性。

答案 1 :(得分:1)

您缺少Z周围的单引号,即您的代码应为:

UPDATE Foo, Bar
SET Foo.B = Bar.B
WHERE Foo.A = CONCAT('Z', Bar.A);

答案 2 :(得分:0)

其实我找到了。我错过了""中的CONCAT

这是有效的:

UPDATE Foo, Bar
SET Foo.B = Bar.B
WHERE Foo.A = CONCAT("Z", Bar.A)

答案 3 :(得分:-1)

您在何处加入语句,您在更新语句中使用表B,在where条件中使用表A.这不会起作用