如何检查简单的insert into values语句错误
今天一同学的简单sql语句(informix数据库)把小编弄的很头痛,语句是:
insert into lcd_gc_ttk3_6d(int_id,recorder_id,omg_id,editor_id,insert_time,skan_start_time,skan_stop_time,think_one,one_old,A7788270417,A7788270418,A7788270419,A7788270420,A7788270421,A7788270422,A7788270423,A7788270424,A7788270425,A7788270426,A7788270427,A7788270428,A7788270429,A7788270430,A7788270431,A7788270432,A7788270433,A7788270434,A7788270435,A7788270436,A7788270437,A7788270438,A7788270439,A7788270440,A7788270441,A7788270442,A7788270443,A7788270444,A7788270445,A7788270446,A7788270447,A7788270448,A7788270449,A7788270450,A7788270451,A7788074417,A7788074418,A7788074419,A7788074420,A7788074421,A7788074422,A7788074423,A7788074424,A7788074425,A7788074426,A7788074427,A7788074428,A7788074429,A7788074430,A7788074431,A7788074432,A7788281417,A7788281418,A7788281419,A7788281472,A7788281473)
values(-679377977,2,824,8,'2013-09-16 18:00:50','2013-09-16 14:00:00','2013-09-16 15:00:00','824:400:.3221229568.3221274624.3221278733.14026650',0,0,0,0,0,0,1615,192,14,1,0,0,0,0,0,0,0,0,0,0,375,0.0,0.0,0.0,0.0,0.0,4.307,0.512,0.037,0.0030,0.0,0.0,0.0,0.0,0.0,0.0
,,,,,,,,,,,,,,,,,145,7491764,8019975,51667,55310)
可以看到,语句中的加粗斜体为insert into lcd_gc_ttk3_6d values,这就是一个最简单的插入语句。但看着这语句长度,确实头痛,最后小编用了“一分为二”的方法,一半一半的找问题,发现了上面语句那一串加粗的‘
,’有问题,插入空值不能这样写,
要么不插入字段,要么写Null或''。下面就来讲讲小编的方法,以比较简单的sql语句进行讲解。
步骤
- 01
先建立一个测试表:love_test。并查询。 建表语句: create table love_test ( test_ky NUMBER(10) NOT NULL, NAME1 VARCHAR2(20), NAME2 VARCHAR2(20), NAME3 VARCHAR2(20), NAME4 VARCHAR2(20), NAME5 VARCHAR2(20), NAME6 VARCHAR2(20), NAME7 VARCHAR2(20), AGE1 FLOAT(10), AGE2 FLOAT(10), AGE3 FLOAT(10), AGE4 FLOAT(10), AGE5 FLOAT(10), AGE6 FLOAT(10), AGE7 FLOAT(10), AGE8 FLOAT(10), AGE9 FLOAT(10) ); 查询语句: select * from love_test;
- 02
错误的插入语句为: INSERT INTO love_test (test_ky,Name1,Name2,Name3,Name4,Name5,Name6,Name7,AGE1,AGE2,AGE3,AGE4,AGE5,AGE6,Age7,AGE8,Age9)VALUES (1, 'a','b','c','d','e','f',,1,0,,,,1,1,99); 如图,执行插入语句弹出了出错提示,表达式错误(miss expression)。
- 03
第一步:只插入NOT NULL字段 测试表不为空的字段只有一个,那插入语句可以很简化了: INSERT INTO love_test (test_ky) VALUES (1); 并用查询语句 select * from love_test; 进行查询
- 04
第二步:一分为二进行插入 第一步没有找到错误,那么就把要插入数据为NULL的字段一分为二缩小范围查找(NOT NULL字段都要加上哦)。 小编这个测试语句就按类型分了。 插入语句为: INSERT INTO love_test (test_ky,Name1,Name2,Name3,Name4,Name5,Name6,Name7) VALUES (1, 'a','b','c','d','e','f',); 现在又报错了,当然,小编这里数据少,所以很明显的看出里是插入Name7字段出错了。为了更明显的说明这方法。再加一步。
- 05
第三步 至 第N步:继续一分为二进行插入查找 上一步是找到了错误,若前半部分没有错误,那么就对后半部分进行插入查找错误。 当找到前半部分错误后,继续使用一分为二方法,小编将前后部分的语句都写出来: 前半部分插入: INSERT INTO love_test (test_ky,Name1,Name2,Name3) VALUES (1, 'a','b','c'); 后半部分插入: INSERT INTO love_test (test_ky,Name4,Name5,Name6,Name7) VALUES (1,'d','e','f',); 如图,找到了是后半部分的问题。 就这样反复查找,终会有查到错误所在的。