有趣的小小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'

 

 

致第一次安装(yong)小小输入法的你

致第一次安装(yong)小小输入法的你目录致第一次安装yong小小输入法的你目录强大全开放的外挂内置输入平台 支持各种编码 方便的词库维护功能 最温情的输入法 本文的题目就参考了百度贴吧「致第一次安装...
  • liming0931
  • liming0931
  • 2016年12月07日 20:55
  • 6227

一次非常有意思的 SQL 优化经历

我用的数据库是 Mysql 5.6,下面简单的介绍下场景 课程表: create table Course( c_id int PRIMARY KEY, name varchar...
  • kuyuyingzi
  • kuyuyingzi
  • 2015年05月22日 12:52
  • 718

小小输入法使用小记

从网上得知,适合自定义、折腾的输入法非Rime和小小输入法了,前段时间接触了rime,也集成了小鹤双拼(音形方案),把其余不用的输入方式统统删除了,也罢整个界面调整为简体了,除了不能修改的之外。 以前...
  • liming0931
  • liming0931
  • 2016年12月04日 19:11
  • 3227

一个小小的计算器

(一) 需求和规格说明 输入是一个带有括号的四则运算表达式,输出是计算得出的正确计算结果。例如:输入:123+213-67*34+345/23*45*(34+34-345+245+567)回车,然后...
  • CLAYFire
  • CLAYFire
  • 2015年07月13日 16:39
  • 388

《有趣的二进制》学习笔记(持续更新)

1.1.1学习首先遇到了Process Monitor不太会用的情况。这里很简单的讲一下Process Monitor的使用。个人觉得比较方便的是建立一个空文件夹在桌面,这里我建立一个文件夹名为lab...
  • izheng000
  • izheng000
  • 2016年02月05日 17:52
  • 1407

CCF模拟题——有趣的数详解

马上就要参加CCF认证考试了,然后最近就在做CCF上的模拟题,我选的语言是java,然后遇到第四题——有趣的数,当时一看题目,卧槽太TM简单了,比第一题和第二题还简单,高兴死我了,然后我就做呗,然后我...
  • liuyongjie985
  • liuyongjie985
  • 2015年03月21日 16:39
  • 3944

一些有趣的算法

本文专门记录一些有趣的算法。计算二进制数中1的个数这道题目的一个解决方案是通过%2来计算,这个比较简单。现在推荐一个快速算法,利用n=n&(n-1);来计算,可以这么解释这个运算的作用:一个数减1以后...
  • linshijun33
  • linshijun33
  • 2016年08月04日 23:54
  • 1034

matlab中有哪些有趣的命令?好玩的matlab彩蛋

比如说,我在command窗口输入“xpbombs”然后回车运行就会跳出一个扫雷游戏的小程序,或者输入“vibes”运行就会跳出一个膜振动的动画,还可以调节快慢 嗯,就是这种的修改 ...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年05月09日 20:20
  • 4261

小程序代码包压缩 策略&方案

微信小程序自推出以来,逐渐发展,目前正受到越来越多的青睐。其中很重要的一点得益于小程序的轻量级特性,每个小程序最多不超过2MB,招之即来挥之即去,相比于几十上百兆的APP,用户进入小程序,或者说,小程...
  • P6P7qsW6ua47A2Sb
  • P6P7qsW6ua47A2Sb
  • 2017年12月13日 00:00
  • 55

[编程题] 有趣的数字

小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢? 输入描述: 输入包含多组测试数据。 对于每组测试数据: N - 本组测试...
  • You_are_my_dream
  • You_are_my_dream
  • 2017年01月22日 18:27
  • 452
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:有趣的小小SQL
举报原因:
原因补充:

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