Sql 查询过滤器delphi firedac Firebird数据库

Sql 查询过滤器delphi firedac Firebird数据库,sql,delphi,firebird,firedac,Sql,Delphi,Firebird,Firedac,我正在将数据库从SQLITE迁移到Firebird,但现在我的查询不起作用 我做错了什么?有什么原因吗 frmDados.Clientes.Close(); frmDados.Clientes.SQL.Text := 'SELECT * FROM CLIENTES ' + 'WHERE (nomecliente like :d1) '+ 'order by nomecliente asc'; frmDados.Clientes.Params.ParamB

我正在将数据库从SQLITE迁移到Firebird,但现在我的查询不起作用

我做错了什么?有什么原因吗

frmDados.Clientes.Close();   
frmDados.Clientes.SQL.Text := 
    'SELECT * FROM CLIENTES ' +
    'WHERE  (nomecliente like  :d1) '+
    'order by nomecliente asc';   
frmDados.Clientes.Params.ParamByName('d1').AsString := '%' + Edit1.text + '%';

frmDados.Clientes.OpenOrExecute();

Firebird不支持不区分大小写的查询

考虑这些选择

select * from "abc_table" where "Some_Field" = 'Abc'

select * from "abc_table" where "Some_Field" like 'Abc'

select * from "abc_table" where "Some_Field" containing 'Abc'

select * from "abc_table" where upper("Some_Field") = 'ABC'
Equals(=)和*like*都执行区分大小写的匹配
*containing*不区分大小写,但也将与'abcd'匹配
upper()可以工作,但不会使用索引,因此将读取表中的每条记录

Equals(=)是最快的,因为它使用索引(如果可用)

不仅过滤a,如果我有字母“abcd”,我写a,不过滤,我写C,它会过滤。NOMECLIENTE VARCHAR(80),“我的查询不起作用”不是一个有用的问题描述。请回答您的问题并解释它如何不起作用。你得到了错误的结果吗?你有错误吗?如果您想在解决问题时得到帮助,请具体说明您遇到的问题。如果您在管理工具中编写相同的查询(填写参数),它是否会给您预期的结果?无论如何,我个人不会选择Firebird(如果有的话)。嗨,问题是:如果我写“El”,搜索“El Corte Inglés”将不会返回任何东西,如果我写“El”或“Co”,它将返回数据记录。如果是captal或不是captal,有没有办法搜索?既然是这样,但在我的情况下我该怎么做。有大写字段吗?或者我可以筛选?@ml.:如果使用不区分大小写的排序规则,那么Firebird确实支持不区分大小写的查询(甚至索引)。