使用PL/SQL列出带有特殊字符的行

日期: 2010-01-11 作者:Dan Clamage翻译:孙瑞 来源:TechTarget中国 英文

问:我现在试图将含有特殊符号(*, ?, <, >, |)的行列出来。试了下面的查询但是还是无法实现。请专家帮助一下,谢谢!(dname是一个字符串)   select dataid, dname, max(to_char(auditdate,’YYYY-MM-DD’)) as “Audit Date” from daudit where dname like ‘%*%’ or (dname like ‘%?%’) or (dname like ‘%%’),or (dname like ‘%|%’) group by dataid, ……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

问:我现在试图将含有特殊符号(*, ?, <, >, |)的行列出来。试了下面的查询但是还是无法实现。请专家帮助一下,谢谢!(dname是一个字符串)

  select dataid, dname, max(to_char(auditdate,'YYYY-MM-DD')) as "Audit Date" from daudit where dname like ‘%*%’ or (dname like ‘%?%’) or (dname like ‘%<%’) or (dname like ‘%>%’),or (dname like ‘%|%’) group by dataid, dname order by dataid

  你是收到错误信息还是没有得到想要的结果?

  乍一看来,你的查询是OK的,除了其中的单引号,一对单引号和两个单引号是有区别的(’’和‘ ’)。不知道这是你使用文字编辑器的问题还是手写的时候就出了问题。

  如果在auditdate上使用to_char()函数的目的仅仅是移除时间组件,那么你可以考虑使用trunc()。字符串转换比其他操作函数更占系统资源。在一个字符串中查找一个或多个特定的字符时,使用正则表达式会更加高效(前提是你使用的10g以上版本)。或者你可以使用translate()函数将特殊字符转换到空间,然后看经转换后的字符串与没有转换的字符串是否有差别:

  Where dname != translate(dname, '*?<>|', ' ')

翻译

孙瑞
孙瑞

相关推荐