有趣的小小SQL

原创 2012年03月27日 14:26:27

题目:给一个整数,如何得到一个有规律的字符串。比如:2得到12;3得到123;4要得到1234;5得到12345,而6得到123456;当数值大于7时,大于7的数都为7。比如8得到12345677; 10得到1234567777等,整数值最大为24

下面是我的方法:

create or replace procedure SP_TEST(str_in in integer) is

output varchar2(200);

begin
  
   select case when str_in > 7 then rpad('1234567',str_in,'7') 
   else substr('1234567',0,str_in) end into output 
          from dual;
   
   DBMS_OUTPUT.put_line(output);
end SP_TEST;


测试结果:

 

以下为网友的代码:

VAR N NUMBER;
EXEC :N:=5;
SELECT LPAD(RPAD('1234567',30,'7'),:N) FROM DUAL;


测试结果:

 

分析:

我使用了Oracle中的case when 逻辑判断 以及rpad、substr函数来实现。而网友见使用了lpad和rpad来实现。

下面是lpad,rpad、substr,的用法:

http://www.techonthenet.com/oracle/functions/lpad.php

Oracle/PLSQL: Lpad Function


 

In Oracle/PLSQL, the lpad function pads the left-side of a string with a specific set of characters (whenstring1 is not null).

The syntax for the lpad function is:

lpad( string1, padded_length, [ pad_string ] )

string1 is the string to pad characters to (the left-hand side).

padded_length is the number of characters to return. If the padded_length is smaller than the original string, the lpad function will truncate the string to the size ofpadded_length.

pad_string is optional. This is the string that will be padded to the left-hand side ofstring1. If this parameter is omitted, the lpad function will pad spaces to the left-side ofstring1.

Applies To:

  • Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g

For Example:

lpad('tech', 7); would return '   tech'
lpad('tech', 2); would return 'te'
lpad('tech', 8, '0'); would return '0000tech'
lpad('tech on the net', 15, 'z'); would return 'tech on the net'
lpad('tech on the net', 16, 'z'); would return 'ztech on the net'

 

Oracle/PLSQL: Rpad Function


 

In Oracle/PLSQL, the rpad function pads the right-side of a string with a specific set of characters (whenstring1 is not null).

The syntax for the rpad function is:

rpad( string1, padded_length, [ pad_string ] )

string1 is the string to pad characters to (the right-hand side).

padded_length is the number of characters to return. If the padded_length is smaller than the original string, the rpad function will truncate the string to the size ofpadded_length.

pad_string is optional. This is the string that will be padded to the right-hand side ofstring1. If this parameter is omitted, the rpad function will pad spaces to the right-side ofstring1.

Applies To:

  • Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g

For Example:

rpad('tech', 7); would return 'tech   '
rpad('tech', 2); would return 'te'
rpad('tech', 8, '0'); would return 'tech0000'
rpad('tech on the net', 15, 'z'); would return 'tech on the net'
rpad('tech on the net', 16, 'z'); would return 'tech on the netz'

 

 

相关文章推荐

关于PL SQL的小小文件

  • 2015年05月01日 20:33
  • 41.53MB
  • 下载

SQL Server与Oracle对比学习:权限管理(二) 一些有趣的比喻

SQL Server权限管理   login 与user的区别 我玩惯了Oracle刚一来玩SQL Server就被login 和user这样的概念搞的有点迷糊了.因为Oracle中没有这样的区...

有趣的循环 代码

  • 2013年07月02日 12:47
  • 909B
  • 下载

微软新一代输入法框架 TSF - Text Service Framework 小小的研究

虽说是转载的,但是其中,有很多我自己的评论,我会用红色的字标出来,参考的博文有: TSF架构:http://blog.csdn.net/mspinyin/article/details/61377...
  • puncha
  • puncha
  • 2013年10月28日 15:28
  • 10524

一个有趣的回溯算法

  • 2012年09月30日 16:38
  • 652B
  • 下载

很有趣的javascript编写的代码

  • 2012年01月09日 15:53
  • 1KB
  • 下载

Python + Scrapy 小小爬虫有大大梦想

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。1.scrapy安装pip install scrapy2.scr...
  • Temanm
  • Temanm
  • 2015年11月26日 11:54
  • 2701

关于23种设计模式的有趣见解.doc

  • 2012年01月09日 10:11
  • 43KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:有趣的小小SQL
举报原因:
原因补充:

(最多只允许输入30个字)