使用LIKE运算符

时间:2015-05-06 15:14:20

标签: excel ms-access connection ms-office oledb

当我在Access中的Query中使用LIKE运算符并且我在Excel中创建OLEDB连接以将此数据导入Excel时,即使用另一个过滤器更改查询后数据也不会更新。就像我没有用新过滤器更改查询一样。

我可以通过此查询并添加INTO TempTable并在excel中的OLEDB连接中链接此temptable来解决此问题。在这种情况下,会反映更改,但查询不会直接反映。

查询

SELECT tb_fechamento_ddd.PERIODO, 
       tb_fechamento_ddd.DDD,
       tb_fechamento_ddd.metrica, 
       tb_fechamento_ddd.categoria, 
       tb_fechamento_ddd.Qtd
FROM tb_fechamento_ddd
WHERE (((tb_fechamento_ddd.PERIODO)>=#3/1/2014#) 
AND ((tb_fechamento_ddd.DDD)="93") 
AND (((tb_fechamento_ddd.metrica) Not Like "*GSM*" 
And (tb_fechamento_ddd.metrica) Not Like "*CDMA*" 
And (tb_fechamento_ddd.metrica) Not Like "*LTE*")) 
AND ((tb_fechamento_ddd.categoria)="Pre")) 
OR (((tb_fechamento_ddd.PERIODO)>=#3/1/2014#) 
AND ((tb_fechamento_ddd.DDD)="93") 
AND (((tb_fechamento_ddd.metrica) Not Like "*GSM*" 
And (tb_fechamento_ddd.metrica) Not Like "*CDMA*" 
And (tb_fechamento_ddd.metrica) Not Like "*LTE*") 
And (tb_fechamento_ddd.metrica) Like "Migra*") 
AND ((tb_fechamento_ddd.categoria) Like "*Pré*"));

P.S:对于过多的括号和Where子句中的重复过滤器感到抱歉,但是如果我不使用它,则访问不起作用。

1 个答案:

答案 0 :(得分:1)

基于HansUp引用的帖子:

我将每个LIKE更改为ALIKE运算符,并将访问模式的*更改为ANSI模式的%。

然后:

SELECT tb_fechamento_ddd.PERIODO, 
   tb_fechamento_ddd.DDD,
   tb_fechamento_ddd.metrica, 
   tb_fechamento_ddd.categoria, 
   tb_fechamento_ddd.Qtd
FROM tb_fechamento_ddd
WHERE (((tb_fechamento_ddd.PERIODO)>=#3/1/2014#) 
AND ((tb_fechamento_ddd.DDD)="93") 
AND (((tb_fechamento_ddd.metrica) Not Alike "%GSM%" 
And (tb_fechamento_ddd.metrica) Not Alike "%CDMA%" 
And (tb_fechamento_ddd.metrica) Not Alike "%LTE%")) 
AND ((tb_fechamento_ddd.categoria)="Pre")) 
OR (((tb_fechamento_ddd.PERIODO)>=#3/1/2014#) 
AND ((tb_fechamento_ddd.DDD)="93") 
AND (((tb_fechamento_ddd.metrica) Not Alike "%GSM%" 
And (tb_fechamento_ddd.metrica) Not Alike "%CDMA%" 
And (tb_fechamento_ddd.metrica) Not Alike "%LTE%") 
And (tb_fechamento_ddd.metrica) Alike "Migra%") 
AND ((tb_fechamento_ddd.categoria) Alike "%Pré%"));

Excel上的Access Query的另一个错误是我得到了解决方案:

  • 使用UNION的查询显示在Excel中创建连接的查询列表中:

创建一个SubQuery to" shelter"使用联盟的查询:

Select * from table_A
UNION ALLL
Select * from table_B

Select * from 
(Select * from table_A
UNION ALLL
Select * from table_B) as SubQryUnion

另一个错误: 如果在具有聚合函数的字段上使用与表字段具有相同名称的别名并在表达式字段中使用此别名,则查询不会显示。

Select field1, field2, sum(table.qtd) as qtd, qtd/12 as yearmean
from table
group by field1, field2

选择另一个名称来聚合字段:

Select field1, field2, sum(table.qtd) as quantity, quantity/12 as yearmean
from table
group by field1, field2