您当前的位置:首页 > 互联网教程

oracle与sql的区别(常用函数)

发布时间:2025-05-19 23:01:11    发布人:远客网络

oracle与sql的区别(常用函数)

一、oracle与sql的区别(常用函数)

1、许多软件公司都理解开发不依赖于特定数据库类型(例如Oracle SQL Server DB)的应用程序的重要性它可以让客户们选择自己习惯的平台一般来说软件开发人员都能够识别出他们的负责数据库维护的客户和必须使用现有平台和个性化的客户

2、关于Oracle和SQL Server之间的区别已经有很多篇文章从企业的角度和数据库管理员的角度出发描写了两者之间的一般差别在这篇文章里面我将会从应用程序的角度向你描述SQL erver和oracle平台之间的区别并且将会讨论开发不依赖于数据库环境的应用程序的几种可能的方法与此同时我不会再论讨对于应用程序来说两个平台之间显而易见的区别例如表的分割和索引

3、定义通用接口和语言有很少的几种通用语言和接口可以让应用程序不依赖于数据库想来也可以以同样的方式应用在关系型数据库上面: ANSI是美国国家标准局定义的这是一家志愿者成员的组织(用私人基金运转)他们在有关设备和程序等广泛领域内开发了国家承认的标准在数据库领域 ANSI定义了编写SQL命令的标准假设命令可以运行在任何的数据库上而不需要更改命令的语法

4、 ODBC是开放数据库连接(ODBC)接口微软定义的它可以让应用程序访问数据库管理系统(DBMS)中的数据使用SQL作为访问数据的标准 ODBC允许最大的互联性这意味着一个单个的应用程序可以访问不同的数据库管理系统然后应用程序终端用户可以添加开放数据库连接(ODBC)数据库驱动来将应用程序与他们所选择的数据库管理系统链接上 OLE DB是ODBC的继承者是一组允许例如基于VB C++ Access等任何可以连接到类似SQL Server Oracle DB MySQL等后台的前台的软件组件在许多种情况下 OLE DB组件都比原有的ODBC提供了好得多的性能

5、 JDBC(Java数据库连接)应用程序接口是Java编程语言和广泛范围的数据库 SQL数据库和其他表列数据源(例如电子表格或者普通文本文件)之间进行不依赖于数据库的连接的行业标准 JDBD应用程序接口为基于SQL的数据库访问提供了调用级别的应用程序接口真实世界中的通用接口不幸的是并不是所有数据库级别的命令都是ANSI每个数据库平台都有自己的扩展功能对于ANSI或者通用接口一般来说都代表着几本功能因此也可能意味着丧失了性能方面的竞争力对于小型数据库和小型应用程序来说要维护对数据库的通用访问是简单的但是当数据库和/或应用程序变得越来越大越来越复杂你就不得不向代码中添加功能

6、 SQL Server和Oracle的常用函数对比

7、 O:select abs() value from dual

8、取整(大) S:select ceiling() value O:select ceil() value from dual

9、 S:select floor() value O:select floor() value from dual

10、 S:select cast( as int) value O:select trunc() value from dual

11、四舍五入S:select round() value O:select round() value from dual

12、 e为底的幂S:select Exp() value O:select Exp() value from dual

13、取e为底的对数S:select log() value O:select ln() value from dual;

14、 O:select log() value from dual;

15、 O:select power() value from dual

16、 O:select SQRT() value from dual

17、求任意数为底的幂S:select power() value O:select power() value from dual

18、 O:select sys dbms_random value() value from dual;

19、 O:select sign() value from dual

20、 sin cos tan参数都以弧度为单位

21、例如 select sin(PI()/) value得到(SQLServer)

22、弧度角度互换(SQLServer Oracle不知道)

23、 S:select max(value) value from

24、 O:select greatest() value from dual

25、 S:select min(value) value from

26、 O:select least() value from dual

27、如何处理null值(F中的null以代替) S:select F IsNull(F) value from Tbl O:select F nvl(F) value from Tbl

28、 O:select ascii( a) value from dual

29、 O:select chr() value from dual

30、 O:select CONCAT()|| value from dual

31、子串位置返回 S:select CHARINDEX( s sdsq) value O:select INSTR( sdsq s) value from dual

32、模糊子串的位置返回参数去掉中间%则返回//本文转自 C++Builder研究?i=&d=dwn rn S:select patindex(%d%q% sdsfasdqe) value O:oracle没发现但是instr可以通过第四个参数控制出现次数select INSTR( sdsfasdqe sd) value from dual返回

33、求子串S:select substring( abcd) value O:select substr( abcd) value from dual

34、子串代替返回aijklmnef S:SELECT STUFF( abcdef ijklmn) value O:SELECT Replace( abcdef bcd ijklmn) value from dual

35、 O:select Translate( fasdbfasegas fa我) value from dual

36、 O:select INITCAP( abcd dsaf df) value from dual

37、左补空格(LPAD的第一个参数为空格则同space函数)

38、 O:select LPAD( abcd) value from dual

39、右补空格(RPAD的第一个参数为空格则同space函数)

40、 O:select RPAD( abcd) value from dual

41、删除空格S:ltrim rtrim O:ltrim rtrim trim

42、重复字符串S:select REPLICATE( abcd) value

43、发音相似性比较(这两个单词返回值一样发音相同) S:SELECT SOUNDEX( Smith) SOUNDEX( Smythe) O:SELECT SOUNDEX( Smith) SOUNDEX( Smythe) from dual SQLServer中用SELECT DIFFERENCE( Smithers Smythers)比较soundex的差返回为同音最高

44、 O:select sysdate value from dual

45、求日期S:select convert(char() getdate()) value

46、 O:select trunc(sysdate) value from dual

47、 select to_char(sysdate yyyy mm dd) value from dual

48、求时间S:select convert(char() getdate()) value O:select to_char(sysdate hh:mm:ss) value from dual

49、 S:DATEPART和DATENAME函数(第一个参数决定)

50、 year yy yyyy quarter qq q(季度) month mm m(m O无效) dayofyear dy y(O表星期) day dd d(d O无效) week wk ww(wk O无效)

51、 Hour hh hh hh(hh hh S无效) minute mi n(n O无效) second ss s(s O无效)

52、 O:select LAST_DAY(sysdate) value from dual

53、 O:SELECT Next_day(sysdate) vaule FROM DUAL;

54、 S:可以直接转或者select cast( as datetime) value

55、 O:SELECT To_date(:: yyyy mm dd hh mi ss) vaule FROM DUAL;

56、求两日期某一部分的差(比如秒)

57、 S:select datediff(ss getdate() getdate()+) value O:直接用两个日期相减(比如d d=)

58、 SELECT(d d)*** vaule FROM DUAL;

59、根据差值求新的日期(比如分钟)

60、 S:select dateadd(mi getdate()) value

61、 O:SELECT sysdate+// vaule FROM DUAL;

62、 O:SELECT New_time(sysdate ydt gmt) vaule FROM DUAL;

63、 HST HDT阿拉斯加—夏威夷标准时间

64、 Oracle支持的字符函数和它们的Microsoft SQL Server等价函数:

65、函数Oracle Microsoft SQL Server

66、字串连接CONCAT(expressiοn+ expressiοn)

67、返回字符串中的开始字符(左起)INSTR CHARINDEX

68、字符串中的起始模式(pattern)INSTR PATINDEX

69、字符串的语音表示SOUNDEX SOUNDEX

70、从数字数据转换为字符数据TO_CHAR STR

71、将字串中的每个词首字母大写INITCAP N/A

72、字符串长度LENGTH DATELENGTH or LEN

73、列表中最大的字符串GREATEST N/A

二、oracle中的INTERVAL函数详解

1、 INTERVAL YEAR TO MONTH数据类型

2、 INTERVAL integer [ integer]{YEAR| MONTH} [(precision)][TO{YEAR| MONTH}]

3、该数据类型常用来表示一段时间差注意时间差只精确到年和月 precision为年或月的精确域有效范围是到默认值为

4、表示:年个月 YEAR()表示年的精度为可见刚好为为有效数值如果该处YEAR(n) n<就会出错注意默认是

5、表示:个月注意该处MONTH的精度是啊

6、表示:年同 INTERVAL YEAR TO MONTH是一样的

7、表示:个月同 INTERVAL YEAR TO MONTH是一样

8、表示:该处表示有错误精度是了但系统默认是所以该处应该写成 INTERVAL YEAR()或改成大于小于等于的数值都可以的

9、 INTERVAL YEAR TO MONTH+ INTERVAL MONTH=

10、 NUMTODSINTERVAL(n interval_unit)

11、将n转换成interval_unit所指定的值 interval_unit可以为: DAY HOUR MINUTE SECOND

12、注意该函数不可以转换成YEAR和MONTH的

13、 NUMTOYMINTERVAL(n interval_unit)

14、 interval_unit可以为: YEAR MONTH

15、 eg:(Oracle Version RedHat Linux)

16、 SQL> select numtodsinterval( DAY) from dual;

17、* select numtodsinterval( SECOND) from dual

18、* select numtodsinterval( MINUTE) from dual

19、* select numtodsinterval( HOUR) from dual

20、* select numtodsinterval( YEAR) from dual

21、 select numtodsinterval( YEAR) from dual

22、 ORA: illegal argument for function

23、 SQL> select numtoyminterval( year) from dual;

24、* select numtoyminterval( month) from dual

25、 SQL> select to_date( yyyy mm dd) to_date( yyyy mm dd) from dual;

26、 TO_DATE( YYYY MM DD) TO_DATE( YYYY MM DD)

27、* select to_date( yyyy mm dd) to_date( yyyy mm dd) from dual

28、 TO_DATE( YYYY MM DD) TO_DATE( YYYY MM DD)

29、* select to_date( yyyy mm dd) to_date( yyyy mm dd) from dual

30、 TO_DATE( YYYY MM DD) TO_DATE( YYYY MM DD)

31、下面看看INTERVAL YEAR TO MONTH怎么用

32、 SQL> create table bb(a date b date c interval year() to month);

33、 SQL> insert into bb values(to_date( yyyy mm dd) to_date( yyyy mm dd) null)

34、 SQL> update bb set c= numtoyminterval(a b year);

35、直接将相减的天变成年了因为我指定变成年的

36、 SQL> select a b c from bb;

37、 SQL> insert into bb values(null null numtoyminterval( month));

38、 SQL> insert into bb values( null null numtoyminterval( year));

39、 INTERVAL YEAR TO MONTH类型个TIMESTAMP类型的时间差别内部类型是长度是其中个字节存储年份差异存储的时候在差异上加了一个 X的偏移量一个字节存储月份的差异这个差异加了的偏移量

40、 SQL> ALTER TABLE TestTimeStamp ADD E INTERVAL YEAR TO MONTH;

41、 SQL> update testTimeStamp set e=(select interval year+ interval month year from dual);

42、 SQL> select dump(e) from testTimeStamp;

43、 INTERVAL DAY TO SECOND数据类型

44、 INTERVAL{ integer| integer time_expr| time_expr}

45、{{ DAY| HOUR| MINUTE} [( leading_precision) ]

46、| SECOND [( leading_precision [ fractional_seconds_precision ]) ]}

47、 [ TO{ DAY| HOUR| MINUTE| SECOND [(fractional_seconds_precision) ]} ]

48、 leading_precision值的范围是到默认是 time_expr的格式为:HH[:MI[:SS[ n]]] or MI[:SS[ n]] or SS[ n] n表示微秒

49、该类型与INTERVAL YEAR TO MONTH有很多相似的地方建议先看INTERVAL YEAR TO MONTH再看该文

50、表示:天小时为为精度所以 DAY()注意默认值为

51、表示:秒因为该地方秒的后面精度设置为要进行四舍五入

52、 INTERVAL DAY INTERVAL HOUR= INTERVAL DAY TO SECOND

53、 INTERVAL DAY TO SECOND类型存储两个TIMESTAMP之间的时间差异用日期小时分钟秒钟形式表示该数据类型的内部代码是长度位字节

54、 l个字节表示天数(增加 X偏移量)

55、 l小时分钟秒钟各用一个字节表示(增加偏移量)

56、 l个字节表示秒钟的小时差异(增加 X偏移量)

57、 SQL> alter table testTimeStamp add f interval day to second;

58、 SQL> update testTimeStamp set f=(select interval day+ interval second from dual);

59、 SQL> select dump(f) from testTimeStamp;

三、oracle中lpad函数是干嘛用的

lpad函数:在字符串左边添加指定的字符串,用法:

lpad(字符串,截断长度,添加字符串)。准确地说,字符串被字符串截取。如果截距的长度大于字符串的长度,则在字符串的左侧添加一个字符串以填充。如果未指定第三个参数,则填充空格。

从dual中选择lpad('test',10);

从dual中选择lpad('test',10,'ee');

lower(char):将字符串表达式char中的所有大写字母转换为小写字母。

大写(char):将字符串表达式char中的所有小写字母转换为大写字母。

initcap(char):第一个字母转换为大写。

substr(char,start,length):返回字符串表达式char开头的长度字符。

长度(char):返回字符串表达式char的长度。

ascii(char):取char的ascii值。

chr(number):取number的ascii值。

replace(char,search_str[,replacement_str]):用replacement_str替换字符串char中的子字符串search_str;如果search_str=null,则返回char;如果replacement_str=null,则删除char中的search_str。

instr(char1,char2[,n[,m]]:获取子字符串char2在字符串char1中的位置。n为实际搜索位置,m为子字符串出现的次数;n为负,则从尾部开始搜索;n\m默认为1。

lpad(char1,n,char2):填充字符串char1左端的字符串char2,直到长度达到n;char2默认为空格,如果char1.length>n,则返回char1左端的n个字符。

rpad(char1,n,char2):填充字符串char1右端的字符串char2,直到长度达到n;char2默认为空格,如果char1.length>n,则返回char1左端的n个字符。

ltrim(char1[,set]):从字符串char1左端包含的集合中删除任何字符。

rtrim(char1[,set]):删除字符串char1右端包含的集合中的任何字符。

trim(char char from string):从字符串的开头或结尾截断特定字符。

concat(str1,str2):连接字符串,其效果与相同。

参考资料来源:百度百科-Oracle数据库