当我使用“Like”运算符时,Access数据库会挂起?

时间:2012-08-13 05:15:04

标签: sql ms-access ms-access-2010

当我使用Like时,访问卡住了

SELECT ox.*, '+++++++++++' AS judo, sh2.*
FROM OXUS AS ox INNER JOIN Sheet2 AS sh2 ON sh2.ID_P LIKE "*" & ox.ID_P;

如果我使用

SELECT ox.*, '+++++++++++' AS judo, sh2.*
FROM OXUS AS ox INNER JOIN Sheet2 AS sh2 ON sh2.ID_P=ox.ID_P;

立刻打开。

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用隐式连接,即WHERE:

SELECT DISTINCT ox.P_ID, '+++++++++++' AS judo, sh2.P_ID
FROM OXUS AS ox, Sheet2 AS sh2
WHERE Instr(sh2.P_ID, ox.P_ID)>0

但是,它仅对查找行有用。

答案 1 :(得分:0)

第一个语句是基于匹配id的表之间的直接连接。我怀疑这也是一个索引。 第二个声明是基于使用通配符来连接表,以检查每个和任何连接到ID的内容(!)。它也可以从int转换为varchar,具体取决于类型....所有不使用索引。

类似的语句总是会更昂贵,因为它们必须单独检查列内容以获得特定匹配。不建议将它们作为加入的一部分使用。

我认为这是对实际问题的削减,因为类似的陈述毫无意义。

你想要达到什么目标?