取出每个位置相同数值的列

在itpub看到一贴子,要求取出表中某个列上所有位置相同数值的记录。如
表 num_test中,有以下记录:
insert into num_test values('11111');
insert into num_test values('2222');
insert into num_test values('33333');
insert into num_test values('11411');
insert into num_test values('16711');
insert into num_test values('18231');
insert into num_test values('666');
commit;
要取出11111,2222,33333,666这几行记录。收集了下贴中几种巧秒的方法,如下:

测试数据初始化如下:

点击(此处)折叠或打开

  1. SQL> create table num_test(
  2.   2 num_name number
  3.   3 );

  4. 表已创建。

  5. SQL> insert into num_test values(\'11111\');

  6. 已创建 1 行。

  7. SQL> insert into num_test values(\'2222\');

  8. 已创建 1 行。

  9. SQL> insert into num_test values(\'33333\');

  10. 已创建 1 行。

  11. SQL> insert into num_test values(\'11411\');

  12. 已创建 1 行。

  13. SQL> insert into num_test values(\'16711\');

  14. 已创建 1 行。

  15. SQL> insert into num_test values(\'18231\');

  16. 已创建 1 行。

  17. SQL> insert into num_test values(\'666\');

  18. 已创建 1 行。

  19. SQL> commit;

  20. 提交完成。

  21. SQL> select * from num_test;

  22.   NUM_NAME
  23. ----------
  24.      11111
  25.       2222
  26.      33333
  27.      11411
  28.      16711
  29.      18231
  30.        666

  31. 已选择7行。
方法一:
 

点击(此处)折叠或打开

  1. SQL> select * from num_test where replace(num_name,substr(num_name,1,1),\'\') is null;

  2.   NUM_NAME
  3. ----------
  4.      11111
  5.       2222
  6.      33333
  7.        666

方法二:

点击(此处)折叠或打开

  1. SQL> select * from num_test where mod(num_name,lpad(\'1\',length(num_name),\'1\'))=0;

  2.   NUM_NAME
  3. ----------
  4.      11111
  5.       2222
  6.      33333
  7.        666
方法三:


点击(此处)折叠或打开

  1. SQL> select * from num_test where regexp_replace(num_name,\'(.)\\1+\') is null;

  2.   NUM_NAME
  3. ----------
  4.      11111
  5.       2222
  6.      33333
  7.        666
方法四:


点击(此处)折叠或打开

  1. SQL> select * from num_test where lpad(substr(num_name,1,1),length(num_name),substr(num_name,1,1))=num_name;

  2.   NUM_NAME
  3. ----------
  4.      11111
  5.       2222
  6.      33333
  7.        666

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21251711/viewspace-1270048/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21251711/viewspace-1270048/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值