代码之家  ›  专栏  ›  技术社区  ›  OldBuildingAndLoan Caffé

MS Access查询:从VB6应用程序调用LIKE时,为什么会有不同的行为?

  •  2
  • OldBuildingAndLoan Caffé  · 技术社区  · 17 年前

    我解决了这个问题。在VB6中,查询必须使用 % 通配符 使用时 喜欢 ,但在MS Access中,您必须使用***** 通配符 .

    我正在查询同一个数据库-(在MS Access中)。

    从MS Access中进行查询时,以下查询有效:

    SELECT * FROM table WHERE field LIKE '*something*'
    

    在VB6中生成该查询时,我必须执行以下操作:

    SELECT * FROM table WHERE field LIKE '%something%'
    

    发生了什么事?这正常吗?

    6 回复  |  直到 17 年前
        1
  •  5
  •   Uri    17 年前

    Access过去有自己不兼容的SQL版本,因此我认为出于遗留原因,它使用了*。

    我猜Access ODBC连接器可以为您转换东西。

        2
  •  5
  •   cmsjr    17 年前

    默认情况下,Access将使用ANSI-89通配符的子集VB6,通过ADO连接将使用ANSI-92。

    Operator Comparison

    Changing the mode Access uses

        3
  •  1
  •   TAbdiukov miltonb    6 年前

    我不知道这是否适用于VB6,但在Access中,您可以使用

    ALIKE '%something%'
    

    无论您是将VBA与DAO或ADO一起使用,还是在查询编辑器中创建查询,%字符都将被视为通配符。

        4
  •  0
  •   Andrew G. Johnson    17 年前

    我从未见过星号用作like语句的通配符(就在其他地方)——一般来说,百分号是您需要使用的。

        5
  •  0
  •   BradC    17 年前

    是的,这很正常。

    我认为这就是DAO(Access内部使用的)和ADO(VB6用来与Access对话的)之间的区别。

        6
  •  0
  •   Bob    17 年前

    JeTTY version 0.5.68
    >open booksale.mdb;
    #Opened database booksale.mdb (Jet3X "97")
    >select * from authors where author like "ba*";
    #No rows to display
    >select * from authors where author like "ba%";
                   Page 1 of 1
    Au_ID Author     Year Born
    ───── ────────── ─────────
    10    Bard, Dick 1941
    >select * from authors where author alike "ba%";
                   Page 1 of 1
    Au_ID Author     Year Born
    ───── ────────── ─────────
    10    Bard, Dick 1941
    >
    

    当然,您可以获得与Access的兼容性,但是 失去 ANSI SQL-92兼容,以便以后升级到SQL Server等,最终为您自己做更多的工作。