Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL CONCAT字符串+;WHERE子句中的列_Mysql_Sql_Concatenation_Where - Fatal编程技术网

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

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。在任何情况下,问题是需要在

我在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。在任何情况下,问题是需要在字符串常量周围加引号。所以试试这个:

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);