是否可以在SQL中的LIKE语句中执行不区分大小写的搜索?

ama*_*wal 5 sql oracle coldfusion case-insensitive

我用来编写一个select查询,like语句的值是动态的.

  AND       e.rank_request_id = a.request_id
  AND       f.priority_request_id = a.request_id
  AND       b.status_type_id = c.status_id
  AND   b.status_request_id = a.request_id
  AND   a.request_id LIKE '%#form.searchbar#%'
Run Code Online (Sandbox Code Playgroud)

但是只有匹配字符串#form.searchbar#中每个字符的Case时,才会返回结果.

请为此建议一个解决方法,以便它变得不区分大小写.

Sni*_*656 18

我不知道你正在使用什么数据库,但如果这是针对Oracle的,那么你可以强制执行这两种情况.这虽然是执行时间的代价,因为它为该列中的所有值执行此操作,但是如果您拥有大量数据并且可以使用基于函数的索引解决该问题,则只会看到成本.对于Oracle来说,这样的事情是这样的:

AND UPPER(a.request_id) LIKE '%#UCase(Form.Searchbar)#%'
Run Code Online (Sandbox Code Playgroud)

但我建议您使用queryparam,因为看起来来自用户输入的框,所以:

AND UPPER(a.request_id) LIKE <cfqueryparam value="%#UCase(Form.Searchbar)#%" cfsqltype="cf_sql_varchar" />
Run Code Online (Sandbox Code Playgroud)