今导入数据库的时候发现出错了,数据库访问失败,以为是程序的问题最后发现是采集回来的数据有问题,主要是Access里的特殊字字符“[”在搞鬼。
原来数据里面有个单独的“[”而没有“]”(不包含引号),于是我修改一下把缺少]加上就能导入了,原来是采集的数据少了个]。
我用Access打开数据库想把数据名称里面的[ 和 ] 全都去掉,没想到问题又来啦。查找替换]没问题很快搞定,结果这个]竟然不能查找,说“此模式字符串无效”
后来幸好网上找到一个网友的博客里有提此问题,是Access的特殊字条,松了口气问题搞定。
今天在生成一个新站的静态页面时系统报错, 看了一下, 问题出在查询时的"like '[马'"这一句上了, 到数据库里把那一条中的"["删除就没问题了, 但保险起见, 又从Access中用"过滤"功能看了一下, 确实没有包含"["的记录了, 就重新生成.
不想生成中又发现问题了, 还是同样的问题: "["符号! 明明没有了的呀, 定位到出错的那条记录, 竟然真有!!! 新建一条查询, 查了一下, 竟然查不到那条记录@!$$#%%
在OFFICE 2007的HELP中搜了半天, 终于发现: 原来, "["符号在ACCESS的过滤或查询中是作为特殊字符出现的, 用法有点象简单的正则表达式, 象"[1-9]"就是表示1-9之间的数字, 所以遇到查询或过滤中出现"["时Access都会把它当作不完整的区间表达式而报错了.
试了一下, 发现在Access中用过滤或查询找包含"["的记录时不能用"like '['"作为条件, 而应该用"like '[[]'", 即用一对中括号"[]"把这半个中括号"["括起来才行。
PS:之后又研究了下通配符的应用,要查找很多数据中的很多用中括号[]包含的数据并删除掉,比如:电影名[全集] 、电影名[高清] 、电影名[完结]。要把最后面的都删除掉,只需要在Access里查找[[]*]并替换成空就行了。