SQL - 附近有语法错误“”(SQL - Syntax error near ',

2019-09-22 10:20发布

我不能为我的生命弄清楚为什么这个查询将行不通无论哪个我的本地数据库的一个我试试(Oracle,MySQL等,微软的SQL)。

INSERT INTO testtable
VALUES ( 'testvalue' , 12345678, 123.04, 0, '1950-01-03' )

例如,使用Microsoft SQL Server,我得到附近的一个错误“”。

与MySQL我得到

您在2号线附近的“12345678,123.04,0)”您的SQL语法错误。

我试着用它玩,我看着W3学校INSERT INTO的语法。 一切看起来都不错。 会是什么呢?

谢谢!

编辑:

根据要求:这里是MySQL的布局

+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| TestString | varchar(600) | NO   |     | NULL    |       |
| TestInt    | int(11)      | NO   |     | NULL    |       |
| TestDouble | double       | NO   |     | NULL    |       |
| Testbool   | tinyint(1)   | NO   |     | NULL    |       |
| TestDate   | date         | NO   |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+

此外,应该注意到,我可以使用这些值运行参数化查询,它会工作得很好。 只有当我去手动创建,这是一个问题的查询。

Answer 1:

没有什么不对您的架构或语法,因为你可以从这个看到SQL小提琴 。

我的猜测是,你在同一时间运行多个语句,并没有正确界定各一个。 例如:

INSERT INTO testtable
VALUES ( 'testvalue' , 12345678, 123.04, 0, '1950-01-03' )

INSERT INTO testtable
VALUES ( 'testvalue' , 12345678, 123.04, 0, '1950-01-03' )

将导致错误。 然而:

INSERT INTO testtable
VALUES ( 'testvalue' , 12345678, 123.04, 0, '1950-01-03' ); --End statement with ;

INSERT INTO testtable
VALUES ( 'testvalue' , 12345678, 123.04, 0, '1950-01-03' );

...将会运行得很好。 也有可能你有一个流浪的开放式报价的地方,没有被关闭,导致您的语句的一部分是另一个字符串常量的结尾部分。 验证你正在运行什么 ,因为你已经发布的代码将正常工作原样。



Answer 2:

值的格式取决于你列的数据类型,但另一方面总是包裹你的价值' ,除了int数据类型

尝试

INSERT INTO testtable
VALUES ( 'testvalue' , '12345678', '123.04', '0', '1950-01-03' );


Answer 3:

INSERT INTO testtable(column1,column2,column3,column4,column5) 
VALUES ( 'testvalue' , 12345678, 123.04, 0, '1950-01-03' )


Answer 4:

INSERT INTO testtable (TestString,TestInt,TestDouble,Testbool,TestDate ) 
VALUES ( 'testvalue' , '12345678', '123.04', '0', '1950-01-03' )

尝试这个...



文章来源: SQL - Syntax error near ','