我在 LibreOffice 4.0 中使用 Base(仍在使用 Base 附带的 HSQL,但正在考虑迁移到 HSQL 2.2.8),我想执行一个要求输入参数的查询,例如:
SELECT * FROM "Contacts" WHERE "FirstName" LIKE :FirstName
当你运行查询时,会弹出一个窗口,要求你输入“FirstName”的参数
这个问题是,我的当前客户拼写很糟糕,并且参数输入需要完全匹配,包括大写字母。
我尝试了多种方法将通配符 % 符号添加到参数搜索中,但不起作用。
我使用 SQL 进行了通配符查询(例如SELECT * FROM "Contacts" WHERE "FirstName" LIKE 'W%'
),但不幸的是,它要求该客户端进入该查询的 SQL 并更改他正在搜索的字母,而且对于不精通 SQL、数据库或计算机的客户来说,这不是一个选择。
有没有办法将通配符搜索放入生成参数输入的查询中?或者我可以编写一些宏来帮我完成这个任务(请帮忙!)?
注意:虽然搜索记录框确实会在字段中的任何位置搜索匹配项,但由于联系人数量众多,这是一种非常缓慢的搜索方法。
答案1
https://help.libreoffice.org/Common/Find_Record#Wildcard_expression
您可以使用 wildcards:
? 表示单个通配符
* 代表 0-n 个符号
?arry 可以是 Harry 或 Barry
B*b 可以是 Bob 或 bebob
答案2
尚未在 hsql 2.2 上测试过,但这在 hsql 1.8 上有效。也许您可以使用类似的东西——可能必须更改 concat 才能与 || 一起使用。
SELECT * FROM "Contacts" WHERE UPPER("FirstName") LIKE CONCAT(UPPER(:FIRSTNAME),'%')