我不能为我的生活弄清楚为什么这个查询无论我尝试哪个本地数据库都无法工作(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的布局
+------------+--------------+------+-----+---------+-------+ | 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 | | +------------+--------------+------+-----+---------+-------+
另外,应该注意我可以使用这些值运行参数化查询,它可以正常工作。只有当我手动创建查询时才会出现问题。
答案 0 :(得分: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' );
...会运行正常。你也有可能在一个没有被关闭的地方有一个流浪的开放引用,导致你的一部分语句成为另一个字符串常量的结尾部分。验证完全您正在运行的内容,因为您发布的代码将按原样正常工作。
答案 1 :(得分:1)
值的格式取决于列的dataType,但是除了 int dataType
之外,其他手总是用'
包裹你的值
TRY
INSERT INTO testtable
VALUES ( 'testvalue' , '12345678', '123.04', '0', '1950-01-03' );
答案 2 :(得分:0)
INSERT INTO testtable(column1,column2,column3,column4,column5)
VALUES ( 'testvalue' , 12345678, 123.04, 0, '1950-01-03' )
答案 3 :(得分:0)
INSERT INTO testtable (TestString,TestInt,TestDouble,Testbool,TestDate )
VALUES ( 'testvalue' , '12345678', '123.04', '0', '1950-01-03' )
试试这个...