列包含好几个'.',如何查询只包括一个'.’的记录

7970阅读 0评论2014-04-02 TOMSYAN
分类:Oracle

今天有朋友问到,数据中,有些包含好几个'.',我想查询只包括一个'.’的语句,该怎么写

如果是11G的话,比较简单,直接用正则表达式regexp_count即可。

SQL> select name from t;

NAME
------------------------------
adafe.d22
dadfaf..e.d22
ddfa.4.d333

SQL> select name from t
  2  where  regexp_count(name,'\.')=1;

NAME
------------------------------
adafe.d22

如果是11G以下的版本,那么可以用instr的方式来实现。
只要从字符串的左边查询到的"."的位置和从右边查询到的"."的位置相等即可。

SQL> select name
  2  from t
  3  where instr(name,'.')=instr(name,'.',-1);

NAME
------------------------------
adafe.d22

SQL>

上一篇:防火墙实现转发来连接数据库
下一篇:奇怪的查询