Mysql SQL CONCAT字符串+;WHERE子句中的列
我在Foo.a中得到了一个数值,它在Bar中有它的等价物,但有一个字符串前缀(“Z”)。我试图将“Z”附加到条上。列值。我也尝试了Mysql SQL CONCAT字符串+;WHERE子句中的列,mysql,sql,concatenation,where,Mysql,Sql,Concatenation,Where,我在Foo.a中得到了一个数值,它在Bar中有它的等价物,但有一个字符串前缀(“Z”)。我试图将“Z”附加到条上。列值。我也尝试了CONCAT,但没有成功。以下代码返回“未知Z列” 例如14(Foo.A)=Z14(Bar.A)。实际上我找到了它。我错过了CONCAT中的” 这是有效的: UPDATE Foo, Bar SET Foo.B = Bar.B WHERE Foo.A = CONCAT("Z", Bar.A) 如果您的语法正常,那么很可能您正在使用MySQL。在任何情况下,问题是需要在
CONCAT
,但没有成功。以下代码返回“未知Z列”
例如14(Foo.A)=Z14(Bar.A)。实际上我找到了它。我错过了
CONCAT
中的”
这是有效的:
UPDATE Foo, Bar
SET Foo.B = Bar.B
WHERE Foo.A = CONCAT("Z", Bar.A)
如果您的语法正常,那么很可能您正在使用MySQL。在任何情况下,问题是需要在字符串常量周围加引号。所以试试这个:
UPDATE Foo join
Bar
on Foo.A = concat('Z', Bar.A)
SET Foo.B = Bar.B;
无论数据库如何,字符串和日期常量都应始终使用单引号。这是ANSI标准,它减少了出错的可能性。Where is you join语句在update语句中使用表B,在Where条件中使用表A。这是行不通的您缺少Z周围的单引号,即您的代码应该是:
UPDATE Foo, Bar
SET Foo.B = Bar.B
WHERE Foo.A = CONCAT('Z', Bar.A);
您使用的是什么数据库?首先,Z必须是带引号的字符串文字
'Z'
。除此之外,连接方法因数据库引擎而异。@MichaelBerkowski我刚刚注意到。非常感谢。我将指定我的引擎。@MichaelBerkowski编辑了我的答案。+
真的适用于MySQL中的字符串连接吗?@JoachimIsaksson你是对的,+
不适用于MySQL。更正了代码。与其说“这不可行”,不如解释一下原因和解决方法(如果有的话)。
UPDATE Foo, Bar
SET Foo.B = Bar.B
WHERE Foo.A = CONCAT('Z', Bar.A);