`

SQL中通配符、转义符与括号的使用

 
阅读更多
今天使用搜索功能是:发现 1、商品查询中可以加通配符“%”。例如查找商品"龙饼",输入“%龙”也可以查找
keyword = keyword.replaceAll("%", "\\\\%");
查找后发现SQL中直接用 like '%"+keyword+"%'"; 所以导致用%通配符依然可以匹配

找到两个解决方式

1:使用instr()函数 sql + " and  instr(t1.FName, '"+keyword+"')>0";Oacrle和MySQL可以使用
2。      int i=keyword.indexOf("%");
if(i==-1){
sql = sql + " and t1.FName like '%"+keyword+"%'";
}else{
String keyword2=keyword.replace("%", "[%]");
sql = sql + " and t1.FName like '%"+keyword2+"%'";
}


SQL中通配符、转义符与括号的使用 2010-03-16 18:27:42
分类: Oracle
一、搜索通配符字符的说明
可以搜索通配符字符。有两种方法可指定平常用作通配符的字符:
使用 ESCAPE 关键字定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串 5% 的字符串,请使用:
WHERE ColumnA LIKE '%5/%%' ESCAPE '/'
在上述 LIKE 子句中,前导和结尾百分号 (%) 解释为通配符,而斜杠 (/) 之后的百分号解释为字符 %。
在方括号 ([ ]) 中只包含通配符本身。要搜索破折号 (-) 而不是用它指定搜索范围,请将破折号指定为方括号内的第一个字符:
WHERE ColumnA LIKE '9[-]5'
下表显示了括在方括号内的通配符的用法。
符号 含义
LIKE '5[%]' 5%
LIKE '5%' 5 后跟 0 个或更多字符的字符串
LIKE '[_]n' _n
LIKE '_n' an, in, on (and so on)
LIKE '[a-cdf]' a, b, c, d, or f
LIKE '[-acdf]' -, a, c, d, or f
LIKE '[ [ ]' [
LIKE ']' ]

二、实例说明:
在表PersonalMember中查找strloginname字段中含有"["的记录。

可用三条语句:
1、
select strloginname,* from PersonalMember where strloginname like '%\[%' escape '\'
2、(说明"\"与"/"均可与escape关键字结合作为转义符)
select strloginname,* from PersonalMember where strloginname like '%/[%' escape '/'
3、
select strloginname,* from dbo.PersonalMember where charindex('[',strloginname)>0




C++ 的转义字符是:\
SQL 的转义字符是:'(单引号)
例:select * from tbl where uyear='''06'
请注意其中红色背景的单引号,它即表示转义字符,如果我们省略,则整个语句会出错,转义字符不会输出,上例中 uyear 的实际条件值为 '06,而不是 ''06
为什么不能省略呢,假如我们省略,上句变成:select * from tbl where uyear=''06'
由于在 SQL 中单引号表示字符串的开始和结束符号,于是 SQL 解释器会认为语句中灰色背景的为字符串,其后的语句显然是个错误的语句,当然会报错,为了解决字符串的单引号问题,就出现了转义字符单。
分享到:
评论

相关推荐

    SQL server2005 中通配符

    SQL server2005中使用通配符的概念,应用讲解

    SQL中的转义字符

    之前写了篇文章《Oracle转义字符》,说到了Oracle中单引号“’”的转义字符是单引号“’”,那么其他的特殊字符的转义字符又是什么呢,如模糊查询的占位符“%”,“_”等。  经过测试,在Oracle中不能再使用单引号...

    SQL语句填充占位符

    动态生成SQL语句,通过给定的条件自动填充预设SQL语句的配位符,而避免通过程序判断生成SQL语句

    ACCESS中关于SQL语句的转义字符

    ACCESS中关于SQL语句的转义字符

    SQL中使用ESCAPE定义转义符详解

    使用ESCAPE定义转义符  在使用LIKE关键字进行模糊查询时,“%”、“_”和“[]”单独出现时,会被认为是通配符。为了在字符数据类型的列中查询是否存在百分号 (%)、下划线(_)或者方括号([])字符,就需要有一...

    SQL 清除文本中的换行符、回车符、制表符

    SQL 清除文本中的换行符、回车符、制表符

    sql大全sql大全sql大全sql大全sql大全

    sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql大全sql...

    SQL经典案例与使用

    SQL经典案例与使用SQL经典案例与使用SQL经典案例与使用SQL经典案例与使用

    ORACLE_SQLDeveloper使用教程

    本技术专题主要介绍如何使用Oracle SQL Developer和其他开发工具,内容包括使用Oracle Database Home Page、在Oracle中使用SQL*Plus、如何用SQL Developer来操作Oracle数据库以及表列定义等等。

    SqlBuild使用说明

    SqlBuild使用说明

    MySQL 转义字符使用说明

    MySQL的转义字符“\” mfc_basic MySQL识别下列转义字符: \0 一个ASCII 0 (NUL)字符。 \n 一个新行符。 \t 一个定位符。 制符分隔 \r 一个回车符。 \b 一个退格符。 \’ 一个单引号(“’”)符。 \” 一个双引号(...

    易语言批量sql解析为数组, SQL终结符解析

    " 终结符算一条sql语句, 以此分割.难点就是把批量的sql语句, 分割为单条, 一个一个的执行. 估计有的易友可能想到了"分割文本, 发送文本数组"。首先"发送文本数组", 我不喜欢, 有时候显得麻烦.其次"分割文本", 你...

    mybatis 日志 sql参数替换工具

    非常好用的,就是你们所要的 Mybatis日志参数快速替换占位符 sql参数替换工具html

    去除plsql复制的sql语句的多余空格和换行符

    在plsql把一个sql语句美化后要复制到程序里使用时,就会发现有多余的空格和换行符,此程序将美化后的sql语句还原成1行sql语句

    sqlserver中去除字符串中连续的分隔符的sql语句

    以下测试用于去除任何字符串中连线的分隔符 代码如下: –去除字符串中连续的分隔符 declare @str nvarchar(200) declare @split nvarchar(200),@times int set @str=’中 国1 2 34 55 5 6 7 7′;–字符 set @split=...

    sqlserver连接字符串大全

    sqlserver连接字符串大全,基本涵盖全了

    Sql 语句详解

    11. SQL LIKE 操作符 15 12. SQL 通配符 16 13. SQL IN 操作符 18 14. SQL BETWEEN 操作符 18 15. SQL Alias(别名) 19 16. SQL JOIN 20 17. SQL INNER JOIN 关键字 22 18. SQL LEFT JOIN 关键字 23 19. SQL RIGHT ...

    sql注入与转义的php函数代码

    sql注入:  正常情况下: ... $sql = ‘delete from news where id = ‘.$_GET[‘id’];  恶意情况: ... 有时候从客户端传来的数据,可能恶意包含些特殊的字符,比如单引号、斜杠等,所以需要转义,

    Web应用安全:使用SQL注入绕过认证实验.doc

    拦截了空格,可以用双空格/制表符代替,用/**/当做空格,用括号包起来进行,用回车代替空格,以及尝试反引号`的使用: ()代替空格 /**/代替空格 回车代替空格 反引号~代替空格 1.6等于号绕过 拦截了等于号,我们可以...

Global site tag (gtag.js) - Google Analytics