我想创建一个搜索语句并查询这样的内容
select * from table where col like '%vkvk%'
但是通过反复试验,我得出结论,访问不适用于LIKE或 通配符运算符。有没有人有其他解决方案,因为我实际上并不是这样,所以我真的不知道。
答案 0 :(得分:12)
尝试:
select * from table where col like '*vkvk*'
使用星号作为通配符。
答案 1 :(得分:5)
如果要使用类似SQL Server的SQL语法,请转到“访问选项”并将其设置为“SQL 92”模式。据我所知,这有两件事(可能还有其他的):
允许您使用%和_作为通配符而不是Jet SQL的*和?。
允许您使用非疯狂的派生表语法:
SELECT MyTable.*
FROM (SELECT * FROM SomeTable) As MyTable
...而不是使用固定的Jet方法:
SELECT MyTable.*
FROM [SELECT * FROM SomeTable]. As MyTable
...其中包含空格的表和字段名称存在问题,因为必须在派生表定义中使用括号,这会完全打破Jet语法。
正如我所说,可能还有其他一些变化,但如果您是SQL Server程序员,您可能会发现更容易设置SQL 92模式。另一方面,大多数Access帮助使用Access / Jet / ACE约定,因此尝试使用它时可能会更加困惑。
编辑:
自从最初发布此文件以来,我发现在现有的Access应用程序中打开SQL 92模式存在问题。我发现的两个是:
它更改了保留字列表,这意味着之前使用SQL 89保留字列表的SQL可能会中断(如果它使用SQL 92保留字)。
它可以使用隐藏的第一列(在Access应用程序中是一个非常常见的UI对象)来破坏多列组合框。具体来说,它会破坏Autoexpend / autoselect行为。
可能还有其他问题,但是当我在客户端项目中打开SQL 92模式来测试SO的某些内容并且在分发下一次更新时忘记将其关闭时,我意外地发现了这些问题。幸运的是,很快就发现了这些问题,并且将SQL 92模式识别为问题的原因并没有花太多时间。
简而言之,我不认为Access中的SQL 92模式对任何人都有用。在我看来,这是一个针对那些不会首先以交互方式使用Access的人的功能。
答案 2 :(得分:0)
'%kvk%'
一样,有时候工作有时候不会 使用Access 2010与sql server(2008)链接表
使用'*kvk*'
答案 3 :(得分:0)
我尝试了几个"喜欢"一个请求上的语法,(我使用的是VB.NET和一个MS-ACCESS 2010数据库),除了抛出异常之外,它们都没有得到任何其他结果。为什么?我对此一无所知。
我做了这个解决方法,可能对某些类似的情况有用: 而不是
SELECT dbFieldDisplayName FROM dbTableName WHERE dbFieldSearchName Like' A *'
我用过:
SELECT dbFieldDisplayName FROM dbTableName WHERE dbFieldSearchName> =' A' AND dbFieldSearchName<' AZZZ'