您的位置:首页 > 数据库

有些access语句在数据库中可以执行,但是在C#上又不能执行,比如模糊查询-like

2012-12-19 16:43 981 查看
access上运行的语句

select * From a where aa like '1*'; //模糊查询1为开头的数据

C# 上运行的语句 就是把上面的*改成%

select * From a where aa like '1%'; //模糊查询1为开头的数据

具体原因,我查了一下资料:

要进行模糊查找,则必须使用通配符,ACCESS库的通配符和SQL SERVER的通配符不一样。

ACCESS库的通配符为:

* 与任何个数的字符匹配。

? 与任何单个字母的字符匹配

在SQL Server中的通配符为:

% 与任何个数的字符匹配

- 与单个字符匹配

正确写法应是:

在C#里写应写成 Select * From Table Where Name Like '%jacky%'

Select * From Table Where Name Like '_jacky_'

Access内测试语句应写成 : Select * From Table Where Name Like '*jacky*'

Select * From Table Where Name Like '?jacky?'

一般我们在程序里写模糊查询时都是写成如下这样:

Select * from table where txtTitle like '%脚本之家%'

不管连接的数据库是ACCESS还是SQL Server

但是最近写程序时总出现语句正确,但就是出不来结果的情况,比如:手动简单设置服务器安全,及引发的思考,这里提到我写服务查询时总是出不来结果的情况,时间长了,出这问题多了,我发现一个问题,如果按上面的写法写到程序里都是正确的,但是如果用ACCESS里的“查询”功能时会发现,同样的代码却运行不了,为什么呢,为什么在程序里调用时却是正常的,在网上搜索,OK,看来这年头有问题就应该找google或baidu,原来ACCESS里的“查询”不支持像这样的模糊查询 like '%柳永法%',他里面相当于%的是通配符:*,所以要改为

Select * from table where txtTitle like '*脚本之家*'

在SQL Server的查询分析器里还是支持正常的SQL语句的写法的,不知这ACCESS为哈这样尼。

还有我经常用ACCESS的“查询”功能直接在数据库里操作为什么用了那么长时间也没发现这个问题?是因为发现问题时用程序又可以就没管他了,还是根本就没发现过?我想我是发现过,可能项目太就紧,所以没有去研究他吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐