为什么SQL LIKE不能在Microsoft Access中工作?

时间:2010-04-01 07:11:47

标签: ms-access

我想创建一个搜索语句并查询这样的内容

select * from table where col like '%vkvk%' 

但是通过反复试验,我得出结论,访问不适用于LIKE或 通配符运算符。有没有人有其他解决方案,因为我实际上并不是这样,所以我真的不知道。

4 个答案:

答案 0 :(得分:12)

尝试:

select * from table where col like '*vkvk*'

使用星号作为通配符。

答案 1 :(得分:5)

如果要使用类似SQL Server的SQL语法,请转到“访问选项”并将其设置为“SQL 92”模式。据我所知,这有两件事(可能还有其他的):

  1. 允许您使用%和_作为通配符而不是Jet SQL的*和?。

  2. 允许您使用非疯狂的派生表语法:

    SELECT MyTable.*
    FROM (SELECT * FROM SomeTable) As MyTable
    
  3. ...而不是使用固定的Jet方法:

       SELECT MyTable.*
       FROM [SELECT * FROM SomeTable]. As MyTable
    

    ...其中包含空格的表和字段名称存在问题,因为必须在派生表定义中使用括号,这会完全打破Jet语法。

    正如我所说,可能还有其他一些变化,但如果您是SQL Server程序员,您可能会发现更容易设置SQL 92模式。另一方面,大多数Access帮助使用Access / Jet / ACE约定,因此尝试使用它时可能会更加困惑。

    编辑:

    自从最初发布此文件以来,我发现在现有的Access应用程序中打开SQL 92模式存在问题。我发现的两个是:

    1. 它更改了保留字列表,这意味着之前使用SQL 89保留字列表的SQL可能会中断(如果它使用SQL 92保留字)。

    2. 它可以使用隐藏的第一列(在Access应用程序中是一个非常常见的UI对象)来破坏多列组合框。具体来说,它会破坏Autoexpend / autoselect行为。

    3. 可能还有其他问题,但是当我在客户端项目中打开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'