Mysql SQL语法错误,但查询在Access MS上运行良好

Mysql SQL语法错误,但查询在Access MS上运行良好,mysql,sql,select,Mysql,Sql,Select,在Access MS上,此查询运行良好 select Name, LastName, Email, [Name] + [LastName] + [Email] as ThePass from student; 但它在MySQL上不起作用,说“您的SQL语法有错误” 其思想是根据其他字段的值自动填充同一表中的字段。您需要的语法是: select Name, LastName, Email, concat(Name, LastName, Email) as ThePass from

在Access MS上,此查询运行良好

select Name, LastName, Email, [Name] + [LastName] + [Email] as ThePass from student;
但它在MySQL上不起作用,说“您的SQL语法有错误”


其思想是根据其他字段的值自动填充同一表中的字段。

您需要的语法是:

select Name, LastName, Email,
       concat(Name,  LastName, Email) as ThePass
from student;

MySQL中的字符串连接函数是
concat()
,而不是
+
。MySQL无法识别大括号和方括号。如果你打算使用MySQL,你应该学习它的基本知识。

在MySQL中,列被表示为裸字或带正引号。 此外,
+
运算符不能用于连接字符串-相反,您可以没有运算符(连接是隐式的),或者显式调用
concat
函数:

select `Name`, `LastName`, `Email`, `Name` `LastName` `Email` as ThePass from student;
或:


编写完整的错误消息#1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解使用“[Name]+[LastName]+[Email]附近的正确语法,因为第1MS Access行的学生限制0,30”的过程与MySQL不一样,为什么您希望一个查询对另一个起作用?使用concat()对concat Name+LastName+Email执行“SQL的基本语法”不允许标识符使用方括号。“SQL的基本语法”也不允许字符串串联使用
+
。MS Access可能允许这样做,但标准SQL(“基本SQL”)不允许这样做。很好,我不知道隐式连接有一个演示“隐式连接”行为的测试用例吗?是否需要禁用或启用某些SQL_模式设置才能使其正常工作?(我以前在字符串文本中观察到过这种行为,但从未在列标识符中观察过。)如果在ANSI模式下运行,MySQL中的字符串连接也可能是
|
,我正在尝试。谢谢:让您的SQL之旅更加有趣,每个DB引擎都有自己的怪癖。在Oracle中,您将使用:Name | | LastName | | Email作为ThePass@ptrk:
|
是早在'86年SQL标准为字符串连接定义的内容。这不是甲骨文特有的东西。很多很多数据库管理系统都使用它(Oracle、Postgres、DB2、Firebird、Informix、H2、HSQLDB等等),作为一个说明,ANSI还支持
concat()
函数。
select `Name`, `LastName`, `Email`, CONCAT(`Name`, `LastName`, `Email`) as ThePass from student;