Access 错了,还是我傻了
最近系统运行中发现Access 2003 版本中对待 Null 和 ‘’ (空字符)奇怪问题,重现步骤:
1、创建表tabTest ;
2、使用设计视图添加两个字段 ID ,col1
名称
类型
长度
说明
ID
Number
主键,自增
Col1
char
1
无
3、使用sql 添加如下数据
-- col1 字段设置为 null
INSERT INTO tabtest (id, col1) VALUES(1, NULL);
-- col1 字段设置为 ‘’
INSERT INTO tabtest (id, col1) VALUES(2, '');
-- col1 字段设置为 ‘a’
INSERT INTO tabtest (id, col1) VALUES(3, 'a');
4、重新建立查询请求,通过 sql 添加新字段 col2
-- 添加新列col2
ALTER TABLE tabTest ADD COLUMN col2 CHAR(1);
5、使用如下sql 再次向 tabTest 添加新数据
-- col1,col2 字段设置为 null
INSERT INTO tabtest(id, col1, col2) VALUES(4, NULL, NULL);
-- col1,col2 字段设置为 ‘’
INSERT INTO tabtest(id, col1, col2) VALUES(5, '', '');
-- col1,col2 字段设置为 ‘a’
INSERT INTO tabtest(id, col1, col2) VALUES(6, 'a', 'a');
6、打开 tabTest 检查 Id 为 5 的数据。神奇的事情发生了。
col1 字段为 长度为0 的空字符串,而 col2 为长度为1 的字符
问题:
Q1、为何 ID 为 2 的col1 字段 和 col2 字段都是长度为 0 的空字符,
而 ID 为 5 的col1 字段 和 col2 字段长度分别为 0, 1 的空字符,
运行如下sql 得到如下结果:
SELECT id, len(col1) AS col1_长度, len(col2) AS col2_长度
from tabtest
WHERE id IN (2, 5);
Q2、通过如下sql 却能得到ID 为5 的记录
SELECT *
from tabtest
WHERE col1 = ''
AND col2 = '';
相关文档:
一:
1 密码是数据库密码:
设置数据库密码,打开密码为555打开时需要使用
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\1.mdb;User ID=admin;Password=;Jet OLEDB:Database Password=555"
2 用户组:
用户名为 admin 密码为 rr 用户组文件为 c:\system.mdw,打开时需要使用
"Provider=Microsoft.Jet.OLEDB.4.0 ......
用TSQL把Access的表导入到远程Sql Server:
把access 的.mdb里t_itemList 表的数据插入到远程SqlServer的t_itemL1111111表里。
SELECT top 10 * INTO t_itemL1111111 IN [ODBC]
[ODBC;Driver=SQL Server; UID=jyb;PWD=jyb;Server=10.1.18.49;DataBase=所有合并;]
&nb ......
转自
http://topic.csdn.net/t/20050110/09/3711952.html
access中时间要用#,不是双引号
select * from kc where rq < #2000-01-01# and rq>#2002-01-01#
不要用between,它的效率泰低
使用# 而不是 ......
ASP.NET如何连接Access或SQL Server数据库
首先看一个例子代码片断:
程序代码:
--------------------------------------------------------------------------------
using System.Data;
using System.Data.OleDb;
......
string strConnection="Provider=Microsoft.Jet.OleDb.4.0;";
strConnection+ ......