`

sql 转义字符

 
阅读更多

SQL查询中的转义字符

分类: SQL Server 2007-12-06 13:25 5925人阅读 评论(3) 收藏 举报

如果想查找“_cs”结尾的的账户

select * from [user] where loginname like '%_cs'是不行的,_ 被认为是任意的字符,

所以需要转义字符,有两种写法:

select * from [user] where loginname like '%[_]cs'
select * from [user] where loginname like '%/_cs' escape'/'

通配符

含义

%

包含零个或更多字符的任意字符串。

_

任何单个字符。

[ ]

指定范围(例如 [a-f])或集合(例如 [abcdef])内的任何单个字符。

[^]

不在指定范围(例如 [^a - f])或集合(例如 [^abcdef])内的任何单个字符。

例如:

·         LIKE 'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。

·         LIKE '%inger' 将搜索以字母 inger 结尾的所有字符串(如 RingerStringer)。

·         LIKE '%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 BennetGreenMcBadden)。

·         LIKE '_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 CherylSheryl)。

·         LIKE '[CK]ars[eo]n' 将搜索下列字符串:CarsenKarsenCarson Karson(如 Carson)。

·         LIKE '[M-Z]inger' 将搜索以字符串 inger 结尾、以从 M Z 的任何单个字母开头的所有名称(如 Ringer)。

·         LIKE 'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如 MacFeather)。

使用 ESCAPE 关键字定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串 5% 的字符串,请使用:

WHERE ColumnA LIKE '%5/%%' ESCAPE '/'

符号

含义

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 ']'

 

 

like谓词查询中,会使用到两个通配符:"%""_"、,其中"%"表示零个或任意多个字符,"_"表示任意一个字符,但如果查询的条件表达式中出现了"%""_",就需要对其进行转义。

        另外,还有一个特殊的字符"'",若出现在查询表达式中,也需要进行转义,其转义方式和以上两个字符的转义方式有些差别。下面以示例简单说明:

        1、对"%"的转义

        select * from student where description like '%!%%' escape '!'

        sql解释为取出表student中所有字段description中含有"%"的记录。

        2、对"_"的转义

        select * from students where description like '%!_%' escape '!'

        sql解释为取出表student中所有字段description中含有"_"的记录。

        3、对"'"的转义

        select * from students where description like '%''%''

        sql解释为取出表student中所有字段description中含有"'"的记录。

比较以上3sql,不难看出,对于"%""_"需要指定一个转义字符,用关键字escape说明。例子中使用了'!',但你可以使用其它字符,比如字母a-z(大小写任意),或者数字0-9和其它字符等

 

分享到:
评论

相关推荐

    SQL中的转义字符

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

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

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

    sql注入字符转换器

    字符之间的转换支持:单字符转换、MSSQL转换、Oracle转换、字符集转换、URL反转、URL正传、URL转义、宽字符转换

    Mybatis自定义拦截器,对模糊查询传值的特殊字符统一进行转义处理的代码

    特殊字符(\,_,%)转义工具类 MyQueryInterceptor.java: Mybatis自定义拦截器 注意:该拦截器只支持QueryWrapper的like方法,serviceImpl层传全角模糊查询(%%) mapper或xml层的全角模糊查询(%*%)和半角模糊查询(%*或*%)

    sqlstring:MySQL的简单SQL转义和格式

    MySQL的简单SQL转义和格式 安装 $ npm install sqlstring 用法 var SqlString = require ( 'sqlstring' ) ; 转义查询值 注意:这些转义值的方法仅在禁用 SQL模式(MySQL服务器的默认状态)时才有效。 为了避免SQL...

    MySQL 转义字符使用说明

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

    Oracle中转义字符的详细介绍

    由于数据库中有多张表,我不想一条一条的语句写,希望能够通过sql语句直接生成所有的语句,所以写了如下sql: select 'update ' || table_name || ' set flag = 'I'' || ';' from user_tables 这个时候运行,“报错...

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

    关键字 ESCAPE允许确定一个转义字符,告诉DBMS紧跟在转义字符之后的字符看作是实际值。如下面的表达式: LIKE ‘%M%’ ESCAPE ‘M’ 使用ESCAPE关键字定义了转义字符“M”,告诉DBMS将搜索字符串“%M%”中的第二个...

    C#检测是否有危险字符的SQL字符串过滤方法

    本文以一个C#的SQL数据库字串操作函数为例,说明如何实现对SQL字符串过滤、检测SQL是否有危险字符、修正sql语句中的转义字符,确保SQL不被注入等功能。具体实现代码如下: SQL字符串过滤函数: public static bool ...

    php实现处理输入转义字符的代码

    先来个函数,是最近WordPress 3.6中刚刚引入的 /** ... * This should not be used to escape data going directly into an SQL query. * * @since 3.6.0 * * @param string|array $value Stri

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

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

    Mybatis自定义拦截器,对模糊查询传值的特殊字符(\,_,%)统一进行转义处理的代码

    代码包含: EscapeUtil.java:特殊字符(\,_,%)转义工具类 MyQueryInterceptor.java: Mybatis自定义拦截器 注意:该拦截器只支持QueryWrapper的like方法,serviceImpl层传全角模糊查询(%%) mapper或xml层的全角模糊查询(%...

    SQL 批量转换 字符串转换日期

    sql 实例 批量转换 字符串转换日期

    字符串转化成表名

    在建存储过程实现某一目的时,传入的参数会遇到是列名,表名的字符串,在这种情况下,应该怎样通过参数获得你要的值呢?

    浅谈MySQL模糊查询中通配符的转义

    sql中经常用like进行模糊查询,而模糊查询就要用到百分号“%”,下划线“_”这些通配符,其中“%”匹配任意多个字符,“_”匹配单个字符。如果我们想要模糊查询带有通配符的字符串,如“60%”,“user_name”,就...

    数据库中处理SQL语句两大妙招

    采用非绑定方式时许多程序员大都忽略了对单引号的特殊处理,一旦SQL语句的查询条件的变量有单引号出现,数据库引擎就会报错指出SQL语法不对,有两种方法可以解决和处理这种单引号的问题:利用转义字符处理SQL语句;...

    sql-tagged-template-literal:ES6 SQL转义的带标签模板文字,它吐出经过清理SQL字符串

    sql-tagged-template-literal npm install sql-tagged-template-literal ... 与,此模块返回一个字符串 与不同,此模块不适用于动态构建查询 使用库进行转义。 仅用于转义值-您不应在表达式中放入表名或列名

    PHP中常用的转义函数

    1. addslashesaddslashes对SQL语句中的特殊字符进行转义操作,包括(‘), (“), (), (NUL)四个字符,此函数在DBMS没有自己的转义函数时候使用,但是如果DBMS有自己的转义函数,那么推荐使用原装函数,比如MySQL有...

    MySQL数据入库时特殊字符处理详解

    在一个字符串中,如果某个序列具有特殊的含义,每个序列以反斜线符号 (“”)开头,称为转义字符。 MySQL 识别下列转义字符: 0 一个 ASCII 0 (NUL) 字符。 ‘ 一个 ASCII 39 单引号 (“’”) 字符。 ” 一个 ASCII ...

    sqlserver中引号的使用.sql

    select源句中的每2个单引号,在select结果中将变为1个单引号....通过下例仔细体会sqlserver解析sql语句的思想: 去除一个段(不同段以+号间隔)最两端的单引号,留下的 单引号每2个在执行结果中显示1个。

Global site tag (gtag.js) - Google Analytics