我正在尝试生成SQL LIKE查询,例如:
SELECT COUNT(1) FROM Users WHERE SearchField LIKE '%email:%domain.com%'
在OrmLite中,Contains语句转义生成此SQL的%字符:
SELECT COUNT(1) FROM Users WHERE upper("Users"."SearchField") like '%EMAIL:^%DOMAIN.COM%' escape '^'
是否可以禁用转义(在4.0.19中添加)或者是否有更好的方法来生成SQL语句?
谢谢,
答案 0 :(得分:1)
OrmLite的Typed API转义通配符字符串,因此它们被视为安全预防措施,以防止用户输入返回敏感数据。
最简单的方法是使用自定义SQL片段,例如:
q.Where("SearchField LIKE {0}", "%email:%domain.com%");
否则可以覆盖自定义DialectProvider中的EscapeWildcards()(即继承您的首选提供者)以返回值而不转义通配符,但这是一个高级自定义我只考虑你是否适合维护自定义DialectProvider。