1

无论我尝试使用哪个本地数据库(oracle、mysql、microsoft 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 的布局

+------------+--------------+------+-----+-------- -+--------+
| 领域 | 类型 | 空 | 钥匙 | 默认 | 额外 |
+------------+--------------+------+-----+-------- -+--------+
| 测试字符串 | varchar(600) | 否 | | 空 | |
| 测试整数 | 整数(11) | 否 | | 空 | |
| 测试双 | 双 | 否 | | 空 | |
| 测试布尔 | 小整数(1) | 否 | | 空 | |
| 测试日期 | 日期 | 否 | | 空 | |
+------------+--------------+------+-----+-------- -+--------+

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

4

4 回答 4

2

从这个SQL Fiddle可以看出,您的架构或语法没有任何问题。

我的猜测是您一次运行多个语句并且没有正确分隔每个语句。例如:

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

...会运行良好。您也可能在某个地方有一个未关闭的杂散开引号,导致您的部分语句成为另一个字符串常量的结尾部分。准确验证您正在运行的内容,因为您发布的代码将按原样正常工作。

于 2012-09-14T04:42:01.020 回答
1

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

尝试

INSERT INTO testtable
VALUES ( 'testvalue' , '12345678', '123.04', '0', '1950-01-03' );
于 2012-09-14T04:16:06.023 回答
0
INSERT INTO testtable(column1,column2,column3,column4,column5) 
VALUES ( 'testvalue' , 12345678, 123.04, 0, '1950-01-03' )
于 2012-09-14T04:31:00.790 回答
0
INSERT INTO testtable (TestString,TestInt,TestDouble,Testbool,TestDate ) 
VALUES ( 'testvalue' , '12345678', '123.04', '0', '1950-01-03' )

尝试这个...

于 2012-09-14T05:03:19.263 回答