模糊查询和转义字符.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模糊查询和转义字符

SQL模糊查询语句和Escape转义字符 . SQL模糊查询语句和Escape转义字符(2008-09-22 14:26:01) 标签:from 转义字符 sql 单引号 通配符 escape it 通配符描述示例%包含零个或更多字符的任意字符串。WHERE title LIKE %computer% 将查找处于书名任意位置的包含单词 computer 的所有书名。_(下划线)任何单个字符。WHERE au_fname LIKE _ean 将查找以 ean 结尾的所有 4 个字母的名字(Dean、Sean 等)。[ ]指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。WHERE au_lname LIKE [C-P]arsen 将查找以arsen 结尾且以介于 C 与 P 之间的任何单个字符开始的作者姓氏,例如,Carsen、Larsen、Karsen 等。[^]不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符。WHERE au_lname LIKE de[^l]% 将查找以 de 开始且其后的字母不为 l 的所有作者的姓氏。 将通配符作为文字使用可以将通配符模式匹配字符串用作文字字符串,方法是将通配符放在括号中。下表显示了使用 LIKE 关键字和 [ ] 通配符的示例。 符号含义LIKE 5[%]5%LIKE [_]n_nLIKE [a-cdf]a、b、c、d 或 fLIKE [-acdf]-、a、c、d 或 fLIKE [ [ ][LIKE ]]LIKE abc[_]d%abc_d 和 abc_deLIKE abc[def]abcd、abce 和 abcfSQL模糊查询,使用like比较字,加上SQL里的通配符,请参考以下: 1、LIKEMc% 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。 2、LIKE%inger 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。 3、LIKE%en% 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。 4、LIKE_heryl 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。 5、LIKE[CK]ars[eo]n 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。 6、LIKE[M-Z]inger 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。 7、LIKEM[^c]% 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。 Escape 转义字符 用户输入如果没有任何限制的话,则必须对特殊字符进行变换。 如果对单引号不进行变换,则会发生数据库错误,甚至可能导致系统崩溃。 不过回避方法却非常简单,只要将单引号[]转换成两个单引号[]就可以了。 例:SELECT * FROM TBL WHERE COL = ABCDEF; 模糊查询的语句虽然不会发生SQL错误,但是不进行回避的话,则无法得到要检索的值。 回避方法较单引号复杂。需要使用转义符。将[%]转为[/%]、[_]转为[/_], 然后再加上[ESCAPE /]就可以了。 例:SELECT * FROM TBL WHERE COL LIKE ABC/%/_% ESCAPE /; ※最后一个%是通配符。 如果做日文项目的话,会出现全角字符的[%]、[_], 而这两个全角字符同样会作为半角通配符处理。 所以在变换时,同时需要将全角的[%]、[_]进行变换。 例:SELECT * FROM TBL WHERE COL LIKE ABC/%/_/%/_% ESCAPE /; 变换成这样似乎结束了,可是不要忘了还有转义符自身,万一用户输入转义符的话, 以上的处理就会发生SQL错误。所以也必须对转义符进行变换。变换方法就是将[/]转换为[//]。 例:SELECT * FROM TBL WHERE COL LIKE ABC/%/_/%///_% ESCAPE /; 以上的操作都针对于一般的数据类型,如CHAR、VARCHAR2。 如果出现NCHAR、NVARCHAR2的话,以上的处理就会出现ORA-01425错误。 如果改成以下写法,则会发生ORA-01424错误。 SELECT * FROM TBL WHERE COL LIKE %/_% ESCAPE TO_NCHAR(/) 正确的写法应该是 SELECT * FROM TBL WHERE COL LIK

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档