如何对包含开括号字符的字符串执行具有 LIKE 条件的 SQL SELECT?

2024-03-30

我有一个简单的搜索查询:

<cfquery name="_qSearch" dbtype="Query">
    SELECT 
        *
    FROM    MyQoQ
    WHERE
        DESCRIPTION LIKE '%#URL.searchString#%'
</cfquery>

此查询对于大多数值都非常有效。但是,如果有人搜索类似的值"xxx[en",它会发出错误消息The pattern of the LIKE conditional is malformed..

由于括号在 CFQUERY 中有特殊用途,有什么办法可以解决这个问题吗?


环比分享了SQL的特点 http://msdn.microsoft.com/en-us/library/aa933232%28v=sql.80%29.aspx(MS SQL Server)这不仅仅是% and _是 LIKE 中的通配符 - 它还支持正则表达式样式的字符类,如[a-z]对于任何小写字母。

要转义这些值并匹配文字等效项,您可以使用字符类本身,即[[]将匹配文字[,当然你可能也想逃避任何% and _在用户输入中 - 您可以像这样执行所有三个操作:

'%#Url.SearchString.replaceAll('[\[%_]','[$0]')#%'

这只是一个简单的正则表达式替换(使用字符串.replaceAll http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#replaceAll%28java.lang.String,%20java.lang.String%29) 匹配所有实例[ or % or _并将每一个包裹起来[..] - the $0替换侧代表匹配的文本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对包含开括号字符的字符串执行具有 LIKE 条件的 SQL SELECT? 的相关文章

随机推荐