r语言 train函数有哪些方法

r语言 train函数有哪些方法,第1张

R语言实际上是函数的集合,用户可以使用base,stats等包中的基本函数,也可以自己编写函数完成一定的功能。但是初学者往往认为编写R函数十分困难,或者难以理解。这里对如何编写R函数进行简要的介绍。

函数是对一些程序语句的封装。换句话说,编写函数,可以减少人们对重复代码书写,从而让R脚本程序更为简洁,高效。同时也增加了可读性。一个函数往往完成一项特定的功能。例如,求标准差sd,求平均值,求生物多样性指数等。R数据分析,就是依靠调用各种函数来完成的。但是编写函数也不是轻而易举就能完成的,需要首先经过大量的编程训练。特别是对R中数据的类型,逻辑判别、下标、循环等内容有一定了解之后,才好开始编写函数。 对于初学者来说,最好的方法就是研究现有的R函数。因为R程序包都是开源的,所有代码可见。研究现有的R函数能够使编程水平迅速提高。

R函数无需首先声明变量的类型,大部分情况下不需要进行初始化。一个完整的R函数,需要包括函数名称,函数声明,函数参数以及函数体几部分。

1 函数名称,即要编写的函数名称,这一名称就作为将来调用R函数的依据。

2 函数声明,包括 <- function, 即声明该对象的类型为函数。

3 函数参数,这里是输入的数据,函数参数是一个虚拟出来的一个对象。函数参数所等于的数据,就是在函数体内部将要处理的值,或者对应的数据类型。 函数体内部的程序语句进行数据处理,就是对参数的值进行处理 ,这种处理只在调用函数的时候才会发生。函数的参数可以有多种类型。R help的界面对每个函数,及其参数的意义及所需的数据类型都进行了说明。

4 函数体

常常包括三部分

(1) 异常处理

输入的数据不能满足函数计算的要求,或者类型不符, 这时候一定要设计相应的机制告诉用户,输入的数据在什么地方有错误。 错误又分为两种。

第一种, 如果输入的数据错误不是很严重,可以经过转换,变为符合处理要求的数据时, 此时只需要给用户一个提醒,告知数据类型不符,但是函数本身已经 进行了相应的转换。

第二种,数据完全不符合要求,这种情况下,就 要终止函数的运行,而告知因为什么,函数不能运行。这样,用户在 使用函数的情况先才不至于茫然。

(2) 运算过程

包括具体的运算步骤。 运算过程和该函数要完成的功能有关。

R运算过程中,应该尽量减少循环的使用,特别是嵌套循环。R提供了 apply,replicate等一系列函数,来代替循环,应该尽量应用这些函数, 提高效率。 如果在R中实在太慢,那么核心部分只能依靠C或者Fortran 等语言编写,然后再用R调用这些编译好的模块,达到更高的效率。

运算过程中,需要大量用到if等条件作为判别的标准。if和while都是需要数据TRUE/FALSE这样的逻辑类型变量,这就意味着,if内部,往往是对条件的判别,例如 isna, ismatrix, isnumeric等等,或者对大小的比较,如,if(x > 0), if(x == 1), if(length(x)== 3)等等。if后面,如果是1行,则花括号可以省略,否则就必须要将所有的语句都放在花括号中。这和循环是一致的。

例子:

## if与条件判断

funtest <- function(a, b, method = "add"){

if(method == "add") { ## 如果if或者for/while;

res <- a + b ## 等后面的语句只有一行,则无需使用花括号。

}

if(method == "subtract"){

res <- a - b

}

return(res) ## 返回值

}

### 检验结果

funtest(a = 10, b = 8, method = "add")

funtest(a = 10, b = 8, method = "substract")

select replicate('0',10-len(字段))+字段 from 表 --如果原字段是字符型的话这样写

select replicate('0',10-len(字段))+cast(字段 as varchar(10)) from 表 --如果原字段是数字型的话这样写

以上,希望对你有所帮助!

  事情开始得很简单 MegaWare公司市场部门想要一个新的网站来发布文档 开发团队觉得使用SQL Server 数据库作为文档存储仓库会使事情变得简单 Steve是MegaWare的数据库管理员 没有看出这有什么大问题;在数据库中存储文档 而不是使用文件系统 意味着服务器需要多做一些工作 但是它也会使得备份和管理容易得多 数据库与文件系统变得不同步也应该是不可能的   市场部门想要存储的许多文档都超过了 个字节 那么很明显VARCHAR不是适合这项工作的数据类型 作为替代 TEXT数据类型被用来定义存放数据的字段 因为每个TEXT都能容纳 GB的内容 TEXT要存放市场部门的同事们扔进数据库的最大的文件也是没有问题的   数月过去了 市场用大量的无聊拷贝填满了整个数据库 但是这还不是Steve真正关心的问题 数据库愉快地嗡嗡作响地运转着 每个人对项目的结果都很满意   直到公司的标语改变的那个重大的日子 市场部的团队认为 MegaWare: It s really cool! 要比原来的 It s MegaWare s Way or the Highway! 听起来更好 因为市场部团队已经将原来的标语嵌入了仓库中每个文档的页脚上 现在Steve的工作就是更改所有这些文档的页脚    没有问题 Steve想 打开SQL Server 查询分析器工具 执行了如下的T SQL批处理:    UPDATE MarketingDocuments    SET Document =    REPLACE(Document    It s MegaWare s Way or the Highway!    MegaWare: It s really cool!)    当他看到出现的错误消息的时候 Steve的轻松的微笑很快消失了 替换函数的参数 text数据类型无效   替换函数在编写出来的时候 就对TEXT数据类型不起作用 同样也对CHARINDEX或者SUBSTRING不起作用——或者至少是他们在超过 千个字符的情况下不起作用 更进一步地讲 开发人员忘了处理TEXT或者IMAGE类型的本地变量;实际上不支持任何 *** 作 即使是简单地更新一个文档中的一个子字符串都需要用到晦涩的东西 以及难以使用的类似READTEXT和WRITETEXT的函数 而不是开发人员或者忙碌的数据库管理员因为想要弄清如何正确使用而采用了不同类型的函数消耗了时间   SQL Server的开发人员很幸运 他们将会拨开乌云见蓝天 SQL Server 引入了一系列新的被称为MAX的数据类型 这是VARCHAR NVARCHAR和VARBINARY类型的扩展 这几种类型以前被限制在 字节以下 MAX可以容纳高达 GB的数据 与TEXT和IMAGE一样——并且完全兼容所有的SQL Server内置的字符串函数   用MAX关键字定义一个某种MAX类型的变量与替代字符串的尺寸(为VARCHAR/NVARCHAR的时候)或者字节(为VARBINARY的时候)一样简单   DECLARE @BigString VARCHAR(MAX)    SET @BigString = abc   虽然这个变量可以自由地 *** 纵 并且可以传递给任何的内置的字符串函数 兼容性仍然不是没有问题 首先 开发人员不能期望指定了尺寸的VARCHAR和VARBINARY变量在达到 个字节的极限的时候可以自动 升级 到MAX版本 例如 如下的批处理:    DECLARE @String VARCHAR( )    DECLARE @String VARCHAR( )    SET @String = REPLICATE( )    SET @String = REPLICATE( )    SELECT LEN(@String + @String )     + = 但是指定了尺寸的VARCHAR的极限是 因为这两个变量中没有一个是MAX类型 LEN函数的结果就是 不是 在将两个变量连接的时候 一种简单的修正方法就是声明这两个变量中的一个为VARCHAR(MAX)或者将其中的一个变量进行转换 与一个规定了尺寸的类型进行连接的时候 优先考虑MAX类型 最终结果是MAX类型 所以 以下批处理的结果是 正如我们期望的一样:    DECLARE @String VARCHAR( )    DECLARE @String VARCHAR( )    SET @String = REPLICATE( )    SET @String = REPLICATE( )    SELECT LEN(CONVERT(VARCHAR(MAX) @String ) + @String )    在传递给字符串函数的时候 开发人员意识到字符串的原意在默认情况下是规定了尺寸的 而不是MAX类型 也是至关重要的 例如 以下查询的结果就很令人惊奇:    SELECT LEN(REPLICATE( ))    因为字符串 是被作为规定了尺寸的VARCHAR对待 而不是VARCHAR(MAX) 结果就是 ——但是在SQL Server 中 REPLICATE函数能够产生高达 GB的字符串 要修正这个问题 可以将字符串转换为VARCHAR(MAX) 这样函数就会输出同样的类型了:    SELECT LEN(REPLICATE(CONVERT(VARCHAR(MAX) ) ))    这个查询现在将会返回期望的结果: 记住 总是要对采用了新特性编写的代码进行非常仔细的测试;隐藏的问题 例如上面描述的问题 可能并且毫无疑问地会在最坏的时间里造成灾难性的后果   除了变量之外 MAX类型也可以用于定义表的字段:    CREATE TABLE BigStrings    (    BigString VARCHAR(MAX)    )    当用于表的时候 意识到MAX类型具有与TEXT和IMAGE类型稍微不同的行溢出行为是非常重要的 在SQL Server中 最大的行尺寸是 字节 要超过这个限制 并且仍然管理每个都拥有高达 GB的存储 用TEXT和IMAGE类型存储的数据会被存储引擎自动地断行 在行里只留下一个 字节的指针 这意味着行的尺寸是减少了 这对性能有好处 然而 检索大数据是昂贵的 因为它不是与同一行的数据存放在同一个位置   MAX数据类型在默认情况下 使用TEXT/IMAGE溢出行为和正常尺寸的VARCHAR/VARBINARY类型的行为的混合方式 如果一个字段的数据 加上表中所有其他字段的数据 总量少于 字节 数据就存放在行内 如果数据超过 字节 MAX字段的数据就会存放在行外 对于大字符串的表 以下的行将会与表中的其他数据存储在同一个数据页内:    INSERT BigStrings (BigString)    VALUES (REPLICATE( ))    But the following row will result in an overflow:    INSERT BigStrings (BigString)    VALUES (REPLICATE(CONVERT(VARCHAR(MAX) ) ))    你可以更改MAX数据类型在每个表的基础上的默认的行为 它们会表现得和TEXT和IMAGE类型一样 这是通过使用sp_tableoption 存储过程中的 大数值类型在行外 选项实现的 为了修改大字符串表以将MAX类型的处理方式变得与TEXT和IMAGE数据类型的处理方式相同 可以使用如下的T SQL:    EXEC sp_tableoption     BigStrings    large value types out of row      看看定义一个MAX数据类型有多容易 与他们提供的灵活性一样 一些数据设计师将会被引诱以下列的方式开始定义表:    CREATE TABLE Addresses    (    Name VARCHAR(MAX)   AddressLine VARCHAR(MAX)   AddressLine VARCHAR(MAX)   City VARCHAR(MAX)   State VARCHAR(MAX)   PostalCode VARCHAR(MAX)    )    设计师要注意了:不要这样做!一个企业中的数据模型既应该包含有具有实际限制的数据 还要给用户接口设计师有关字段尺寸的大致的指导 像这样的表又该创建什么样的用户接口呢    除了数据整合和用户接口含义之外 如果设计师这样不必要地使用这些类型还会带来性能上的损害 记住 查询优化器使用字段的尺寸作为判断优化查询计划的众多标准之一 对于这个表 优化器几乎没有任何选择   所以 现在你知道了MAX数据类型为SQL Server 处理大数据增加了很大部分的灵活性 但是MegaWare的那个不幸的数据库管理员 Steve会发生什么变化还在坚持使用SQL Server 他开始更新简历 想象著如果更新表失败了话 他的工作也就失去了 但是他也是幸运的——还有世界各地的MegaWare产品的拥护者——用GOOGLE的搜索可以很快地找到这篇文章《在TEXT字段中查找并替代》 这篇文章告诉他如何正确的进行更新 他花了整晚的时间来学习资料;再过几个月之后 TEXT和IMAGE数据类型就仅仅是一段不愉快的记忆了 lishixinzhi/Article/program/SQLServer/201311/22248

打开 查询分析器,按F1,然后查找你要的,都是中文的帮助,很容易看懂的。

关键字很简单。我就不赘述了

,说一下函数吧

17、常用函数

----统计函数----

AVG --求平均值

COUNT --统计数目

MAX --求最大值

MIN --求最小值

SUM --求和

--AVG

use pangu

select avg(e_wage) as dept_avgWage

from employee

group by dept_id

--MAX

--求工资最高的员工姓名

use pangu

select e_name

from employee

where e_wage =

(select max(e_wage)

from employee)

--STDEV()

--STDEV()函数返回表达式中所有数据的标准差

--STDEVP()

--STDEVP()函数返回总体标准差

--VAR()

--VAR()函数返回表达式中所有值的统计变异数

--VARP()

--VARP()函数返回总体变异数

----算术函数----

/三角函数/

SIN(float_expression) --返回以弧度表示的角的正弦

COS(float_expression) --返回以弧度表示的角的余弦

TAN(float_expression) --返回以弧度表示的角的正切

COT(float_expression) --返回以弧度表示的角的余切

/反三角函数/

ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角

ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角

ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角

ATAN2(float_expression1,float_expression2)

--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角

DEGREES(numeric_expression)

--把弧度转换为角度返回与表达式相同的数据类型可为

--INTEGER/MONEY/REAL/FLOAT 类型

RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为

--INTEGER/MONEY/REAL/FLOAT 类型

EXP(float_expression) --返回表达式的指数值

LOG(float_expression) --返回表达式的自然对数值

LOG10(float_expression)--返回表达式的以10 为底的对数值

SQRT(float_expression) --返回表达式的平方根

/取近似值函数/

CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为

--INTEGER/MONEY/REAL/FLOAT 类型

FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式相同可为

--INTEGER/MONEY/REAL/FLOAT 类型

ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据

--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型

ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为

--INTEGER/MONEY/REAL/FLOAT 类型

SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型

--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型

PI() --返回值为π 即31415926535897936

RAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数

18、字符串函数

ASCII() --函数返回字符表达式最左端字符的ASCII 码值

CHAR() --函数用于将ASCII 码转换为字符

--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值

LOWER() --函数把字符串全部转换为小写

UPPER() --函数把字符串全部转换为大写

STR() --函数把数值型数据转换为字符型数据

LTRIM() --函数把字符串头部的空格去掉

RTRIM() --函数把字符串尾部的空格去掉

LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串

CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置

SOUNDEX() --函数返回一个四位字符码

--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值

DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异

--0 两个SOUNDEX 函数返回值的第一个字符不同

--1 两个SOUNDEX 函数返回值的第一个字符相同

--2 两个SOUNDEX 函数返回值的第一二个字符相同

--3 两个SOUNDEX 函数返回值的第一二三个字符相同

--4 两个SOUNDEX 函数返回值完全相同

QUOTENAME() --函数返回被特定字符括起来的字符串

/select quotename('abc', '{') quotename('abc')

运行结果如下

----------------------------------{

{abc} [abc]/

REPLICATE() --函数返回一个重复character_expression 指定次数的字符串

/select replicate('abc', 3) replicate( 'abc', -2)

运行结果如下

----------- -----------

abcabcabc NULL/

REVERSE() --函数将指定的字符串的字符排列顺序颠倒

REPLACE() --函数返回被替换了指定子串的字符串

/select replace('abc123g', '123', 'def')

运行结果如下

----------- -----------

abcdefg/

SPACE() --函数返回一个有指定长度的空白字符串

STUFF() --函数用另一子串替换字符串指定位置长度的子串

19、数据类型转换函数----

CAST() 函数语法如下

CAST() (<expression> AS <data_ type>[ length ])

CONVERT() 函数语法如下

CONVERT() (<data_ type>[ length ], <expression> [, style])

select cast(100+99 as char) convert(varchar(12), getdate())

运行结果如下

------------------------------ ------------

199 Jan 15 2000

20、日期函数----

DAY() --函数返回date_expression 中的日期值

MONTH() --函数返回date_expression 中的月份值

YEAR() --函数返回date_expression 中的年份值

DATEADD(<datepart> ,<number> ,<date>)

--函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期

DATEDIFF(<datepart> ,<number> ,<date>)

--函数返回两个指定日期在datepart 方面的不同之处

DATENAME(<datepart> , <date>) --函数以字符串的形式返回日期的指定部分

DATEPART(<datepart> , <date>) --函数以整数值的形式返回日期的指定部分

GETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时间

21、系统函数----

APP_NAME() --函数返回当前执行的应用程序的名称

COALESCE() --函数返回众多表达式中第一个非NULL 表达式的值

COL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值

COL_NAME(<table_id>, <column_id>) --函数返回表中指定字段的名称即列名

DATALENGTH() --函数返回数据表达式的数据的实际长度

DB_ID(['database_name']) --函数返回数据库的编号

DB_NAME(database_id) --函数返回数据库的名称

HOST_ID() --函数返回服务器端计算机的名称

HOST_NAME() --函数返回服务器端计算机的名称

IDENTITY(<data_type>[, seed increment]) [AS column_name])

--IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中

/select identity(int, 1, 1) as column_name

into newtable

from oldtable/

ISDATE() --函数判断所给定的表达式是否为合理日期

ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换

ISNUMERIC() --函数判断所给定的表达式是否为合理的数值

NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值

NULLIF(<expression1>, <expression2>)

--NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值

22、数学函数

1绝对值

S:select abs(-1) value

O:select abs(-1) value from dual

2取整(大)

S:select ceiling(-1001) value

O:select ceil(-1001) value from dual

3取整(小)

S:select floor(-1001) value

O:select floor(-1001) value from dual

4取整(截取)

S:select cast(-1002 as int) value

O:select trunc(-1002) value from dual

5四舍五入

S:select round(123456,4) value 123460

O:select round(123456,4) value from dual 12346

6e为底的幂

S:select Exp(1) value 27182818284590451

O:select Exp(1) value from dual 271828182

7取e为底的对数

S:select log(27182818284590451) value 1

O:select ln(27182818284590451) value from dual; 1

8取10为底对数

S:select log10(10) value 1

O:select log(10,10) value from dual; 1

9取平方

S:select SQUARE(4) value 16

O:select power(4,2) value from dual 16

10取平方根

S:select SQRT(4) value 2

O:select SQRT(4) value from dual 2

11求任意数为底的幂

S:select power(3,4) value 81

O:select power(3,4) value from dual 81

12取随机数

S:select rand() value

O:select sysdbms_randomvalue(0,1) value from dual;

13取符号

S:select sign(-8) value -1

O:select sign(-8) value from dual -1

----------数学函数

14圆周率

S:SELECT PI() value 31415926535897931

O:不知道

15sin,cos,tan 参数都以弧度为单位

例如:select sin(PI()/2) value 得到1(SQLServer)

16Asin,Acos,Atan,Atan2 返回弧度

17弧度角度互换(SQLServer,Oracle不知道)

DEGREES:弧度-〉角度

RADIANS:角度-〉弧度

---------数值间比较

18 求集合最大值

S:select max(value) value from

(select 1 value

union

select -2 value

union

select 4 value

union

select 3 value)a

O:select greatest(1,-2,4,3) value from dual

19 求集合最小值

S:select min(value) value from

(select 1 value

union

select -2 value

union

select 4 value

union

select 3 value)a

O:select least(1,-2,4,3) value from dual

20如何处理null值(F2中的null以10代替)

S:select F1,IsNull(F2,10) value from Tbl

O:select F1,nvl(F2,10) value from Tbl

--------数值间比较

21求字符序号

S:select ascii('a') value

O:select ascii('a') value from dual

22从序号求字符

S:select char(97) value

O:select chr(97) value from dual

23连接

S:select '11'+'22'+'33' value

O:select CONCAT('11','22')||33 value from dual

23子串位置 --返回3

S:select CHARINDEX('s','sdsq',2) value

O:select INSTR('sdsq','s',2) value from dual

23模糊子串的位置 --返回2,参数去掉中间%则返回7

S:select patindex('%d%q%','sdsfasdqe') value

O:oracle没发现,但是instr可以通过第四霾问�刂瞥鱿执问BR> select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6

24求子串

S:select substring('abcd',2,2) value

O:select substr('abcd',2,2) value from dual

25子串代替 返回aijklmnef

S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value

O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual

26子串全部替换

S:没发现

O:select Translate('fasdbfasegas','fa','我' ) value from dual

27长度

S:len,datalength

O:length

28大小写转换 lower,upper

29单词首字母大写

S:没发现

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

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

S:select space(10)+'abcd' value

O:select LPAD('abcd',14) value from dual

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

S:select 'abcd'+space(10) value

O:select RPAD('abcd',14) value from dual

32删除空格

S:ltrim,rtrim

O:ltrim,rtrim,trim

33 重复字符串

S:select REPLICATE('abcd',2) value

O:没发现

34发音相似性比较(这两个单词返回值一样,发音相同)

S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')

O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual

SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差

返回0-4,4为同音,1最高

23、日期函数

35系统时间

S:select getdate() value

O:select sysdate value from dual

36前后几日

直接与整数相加减

37求日期

S:select convert(char(10),getdate(),20) value

O:select trunc(sysdate) value from dual

select to_char(sysdate,'yyyy-mm-dd') value from dual

38求时间

S:select convert(char(8),getdate(),108) value

O:select to_char(sysdate,'hh24:mm:ss') value from dual

39取日期时间的其他部分

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

O:to_char函数 第二个参数决定

参数---------------------------------下表需要补充

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无效)

weekday dw (O不清楚)

Hour hh,hh12,hh24 (hh12,hh24 S无效)

minute mi, n (n O无效)

second ss, s (s O无效)

millisecond ms (O无效)

----------------------------------------------

40当月最后一天

S:不知道

O:select LAST_DAY(sysdate) value from dual

41本星期的某一天(比如星期日)

S:不知道

O:SELECT Next_day(sysdate,7) vaule FROM DUAL;

42字符串转时间

S:可以直接转或者select cast('2004-09-08'as datetime) value

O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;

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

S:select datediff(ss,getdate(),getdate()+123) value

O:直接用两个日期相减(比如d1-d2=123)

SELECT (d1-d2)246060 vaule FROM DUAL;

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

S:select dateadd(mi,8,getdate()) value

O:SELECT sysdate+8/60/24 vaule FROM DUAL;

45求不同时区时间

S:不知道

O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;

-----时区参数,北京在东8区应该是Ydt-------

AST ADT 大西洋标准时间

BST BDT 白令海标准时间

CST CDT 中部标准时间

EST EDT 东部标准时间

GMT 格林尼治标准时间

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

MST MDT 山区标准时间

NST 纽芬兰标准时间

PST PDT 太平洋标准时间

YST YDT YUKON标准时间

SQL中统计字符串长度的函数是:函数len(string)。  

比如:

select len(&#39;abc&#39;)输出3

select len(&#39;abcde&#39;)输出5

字符串函数对二进制数据、字符串和表达式执行不同的运算。此类函数作用于CHAR、VARCHAR、 BINARY、 和VARBINARY 数据类型以及可以隐式转换为CHAR 或VARCHAR的数据类型。可以在SELECT 语句的SELECT 和WHERE 子句以及表达式中使用字符串函数。

常用的字符串函数有:

ASCII():返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。

CHAR():将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。

LOWER()和UPPER():LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。

STR():把数值型数据转换为字符型数据。

STR (<float_expression>[,length[, <decimal>]])

length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。

当length 或者decimal 为负值时,返回NULL;

当length 小于小数点左边(包括符号位)的位数时,返回length 个;

先服从length ,再取decimal ;

当返回的字符串位数小于length ,左边补足空格。

LTRIM() 把字符串头部的空格去掉。

RTRIM() 把字符串尾部的空格去掉。

left():LEFT (<character_expression>, <integer_expression>)返回character_expression 左起 integer_expression 个字符。

RIGHT():RIGHT (<character_expression>, <integer_expression>)返回character_expression 右起 integer_expression 个字符。

SUBSTRING():SUBSTRING (<expression>, <starting_ position>, length)返回从字符串左边第starting_ position 个字符起length个字符的部分。

CHARINDEX():返回字符串中某个指定的子串出现的开始位置。CHARINDEX (<’substring_expression’>, <expression>)

其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。

此函数不能用于TEXT 和IMAGE 数据类型。

PATINDEX():返回字符串中某个指定的子串出现的开始位置。PATINDEX (<’%substring _expression%’>, <column_ name>)其中子串表达式前后必须有百分号“%”否则返回值为0。与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于CHAR、 VARCHAR 和TEXT 数据类型。

QUOTENAME():返回被特定字符括起来的字符串。QUOTENAME (<’character_expression’>[, quote_ character]) 其中quote_ character 标明括字符串所用的字符,缺省值为“[]”。

REPLICATE():返回一个重复character_expression 指定次数的字符串。REPLICATE (character_expression integer_expression) 如果integer_expression 值为负值,则返回NULL 。

REVERSE():将指定的字符串的字符排列顺序颠倒。REVERSE (<character_expression>) 其中character_expression 可以是字符串、常数或一个列的值。

REPLACE():返回被替换了指定子串的字符串。REPLACE (<string_expression1>, <string_expression2>, <string_expression3>) 用string_expression3 替换在string_expression1 中的子串string_expression2。

SPACE():返回一个有指定长度的空白字符串。SPACE (<integer_expression>) 如果integer_expression 值为负值,则返回NULL 。

STUFF():用另一子串替换字符串指定位置、长度的子串。

STUFF (<character_expression1>, <start_ position>, <length>,<character_expression2>):如果起始位置为负或长度值为负,或者起始位置大于character_expression1 的长度,则返回NULL 值。如果length 长度大于character_expression1 中 start_ position 以右的长度,则character_expression1 只保留首字符。

SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。SQL语言语句可以嵌套,这使他具有极大的灵活性和强大的功能。

1Abs 函数

返回数字的绝对值。

Abs(number)

number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。

说明

数字的绝对值是其无符号的数值大小。例如,Abs(-1) 和 Abs(1) 都返回 1。

下面示例利用 Abs 函数计算数字的绝对值:

Dim MyNumber

MyNumber = Abs(503 ) '返回 503。

MyNumber = Abs(-503) '返回 503。

2Atn 函数返回数值的反正切值。

Atn(number)

number 参数可以是任意有效的数值表达式。

说明

Atn 函数计算直角三角形两个边的比值 (number) 并返回对应角的弧度值。此比值是该角对边的长度与邻边长度之比。结果的范围是从 -pi/2 到 pi/2 弧度。

弧度变换为角度的方法是将弧度乘以 pi/180。反之,角度变换为弧度的方法是将角度乘以180/pi 。

下面的示例利用 Atn 来计算 pi 的值:

Dim pi

pi = 4 Atn(1) ' 计算 pi 的值。

注意 Atn 是 Tan(将角作为参数返回直角三角形两边的比值)的反三角函数。不要混淆 Atn 与余切(正切的倒数 (1/tangent))函数。

3Cos 函数

返回某个角的余弦值。

Cos(number)

number 参数可以是任何将某个角表示为弧度的有效数值表达式。

说明

Cos 函数取某个角并返回直角三角形两边的比值。此比值是直角三角形中该角的邻边长度与斜边长度之比。结果范围在 -1 到 1 之间。

角度转化成弧度方法是用角度乘以 pi/180。反之,弧度转化成角度的方法是用弧度乘以 180/pi。

下面的示例利用 Cos 函数返回一个角的余弦值:

Dim MyAngle, MySecant

MyAngle = 13 ' 用弧度定义一个角。

MySecant = 1 / Cos(MyAngle) ' 计算正割。

4Exp 函数

返回 e(自然对数的底)的幂次方。

Exp(number)

number 参数可以是任意有效的数值表达式。

说明

如果 number 参数超过 709782712893,则出现错误。常数 e 的值约为 2718282。

注意 Exp 函数完成 Log 函数的反运算,并且有时引用为反对数形式。

下面的示例利用 Exp 函数返回 e 的幂次方:

Dim MyAngle, MyHSin ' 用弧度定义角。

MyAngle = 13 ' 计算双曲线的正弦。

MyHSin = (Exp(MyAngle) - Exp(-1 MyAngle)) / 2

5Int、Fix 函数

返回数字的整数部分。

Int(number)

Fix(number)

number 参数可以是任意有效的数值表达式。如果 number 参数包含 Null,则返回 Null。

说明

Int 和 Fix 函数都删除 number 参数的小数部分并返回以整数表示的结果。

Int 和 Fix 函数的区别在于如果 number 参数为负数时,Int 函数返回小于或等于 number 的第一个负整数,而 Fix 函数返回大于或等于 number 参数的第一个负整数。例如,Int 将 -84 转换为 -9,而 Fix 函数将 -84 转换为 -8。

Fix(number) 等同于:

Sgn(number) Int(Abs(number))

下面的示例说明 Int 和 Fix 函数如何返回数字的整数部分:

MyNumber = Int(998) ' 返回 99。

MyNumber = Fix(992) ' 返回 99。

MyNumber = Int(-998) ' 返回 -100。

MyNumber = Fix(-998) ' 返回-99。

MyNumber = Int(-992) ' 返回 -100。

MyNumber = Fix(-992) ' 返回 -99。

6Log 函数

返回数值的自然对数。

Log(number)

number 参数是任意大于 0 的有效数值表达式。

说明

自然对数是以 e 为底的对数。常数 e 的值约为 2718282。

用 n 的自然对数除 x 的自然对数,可以得到以 n 为底的 x 的对数。如下所示:

Logn(x) = Log(x) / Log(n)以下示例为一个自定义的 Function 过程,该过程计算以 10 为底的对数:

Function Log10(X)

Log10 = Log(X) / Log(10)

End Function

7Rnd 函数

返回一个随机数。

Rnd[(number)]

number 参数可以是任意有效的数值表达式。

说明

Rnd 函数返回一个小于 1 但大于或等于 0 的值。number 的值决定了 Rnd 生成随机数的方式:

如果 number 为 Rnd 生成

小于零 每次都相同的值,使用 number 作为种子。

大于零 序列中的下一个随机数。

等于零 最近生成的数。

省略 序列中的下一个随机数。

因每一次连续调用 Rnd 函数时都用序列中的前一个数作为下一个数的种子,所以对于任何最初给定的种子都会生成相同的数列。

在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有基于系统计时器的种子。

要产生指定范围的随机整数,请使用以下公式:

Int((upperbound - lowerbound + 1) Rnd + lowerbound)

这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界。

注意 要重复随机数的序列,请在使用数值参数调用 Randomize 之前,立即用负值参数调用 Rnd。使用同样 number 值的 Randomize 不能重复先前的随机数序列。

8Sgn 函数

返回表示数字符号的整数。

Sgn(number)

number 参数可以是任意有效的数值表达式。

返回值

Sgn 函数有如下返回值:

如果 number 为 Sgn 返回

大于零 1

等于零 0

小于零 -1

说明

number 参数的符号决定 Sgn 函数的返回值。

下面的示例利用 Sgn 函数决定数值的符号:

Dim MyVar1, MyVar2, MyVar3, MySign

MyVar1 = 12: MyVar2 = -24: MyVar3 = 0

MySign = Sgn(MyVar1) ' 返回 1。

MySign = Sgn(MyVar2) ' 返回 -1。

MySign = Sgn(MyVar3) ' 返回 0。

9Sin 函数返回某个角的正弦值。

Sin(number)

number 参数可以是任何将某个角表示为弧度的有效数值表达式。

说明

Sin 函数取某个角并返回直角三角形两边的比值。此比值是直角三角形中该角的对边长度与斜边长度之比。结果的范围在 -1 到 1 之间。

将角度乘以 pi/180 即可转换为弧度,将弧度乘以 180/pi 即可转换为角度。

下面例子利用 Sin 返回角度的正弦:

Dim MyAngle, MyCosecant

MyAngle = 13 ' 用弧度定义角度。

MyCosecant = 1 / Sin(MyAngle) '计算余割。

10Sqr 函数

Sqr(number)

number 参数可以是任意有效的大于或等于零的数值表达式。

说明

下面的示例利用 Sqr 函数计算数值的平方根:

Dim MySqr

MySqr = Sqr(4) ' 返回 2。

MySqr = Sqr(23) ' 返回479583152331272。

MySqr = Sqr(0) ' 返回0。

MySqr = Sqr(-4) ' 产生实时错误。

11Tan 函数

返回某个角的正切值。

Tan(number)

number 参数可以是任何将某个角表示为弧度的有效数值表达式。

说明

Tan 取某个角并返回直角三角形两个直角边的比值。此比值是直角三角形中该角的对边长度与邻边长度之比。

将角度乘以 pi/180 即可转换为弧度,将弧度乘以 180/pi 即可转换为角度。

下面的示例利用 Tan 函数返回角度的正切:

Dim MyAngle, MyCotangent

MyAngle = 13 ' 用弧度定义角度。

MyCotangent = 1 / Tan(MyAngle) ' 计算余切

附:

派生数学函数

下列是由固有数学函数派生的非固有数学函数:

函数 派生的等效公式

Secant(正割) Sec(X) = 1 / Cos(X)

Cosecant(余割) Cosec(X) = 1 / Sin(X)

Cotangent(余切) Cotan(X) = 1 / Tan(X)

Inverse Sine(反正弦) Arcsin(X) = Atn(X / Sqr(-X X + 1))

Inverse Cosine(反余弦) Arccos(X) = Atn(-X / Sqr(-X X + 1)) + 2 Atn(1)

Inverse Secant(反正割) Arcsec(X) = Atn(X / Sqr(X X - 1)) + Sgn((X) -1) (2 Atn(1))

Inverse Cosecant(反余割) Arccosec(X) = Atn(X / Sqr(X X - 1)) + (Sgn(X) - 1) (2 Atn(1))

Inverse Cotangent(反余切) Arccotan(X) = Atn(X) + 2 Atn(1)

Hyperbolic Sine(双曲正弦) HSin(X) = (Exp(X) - Exp(-X)) / 2

Hyperbolic Cosine(双曲余弦) HCos(X) = (Exp(X) + Exp(-X)) / 2

Hyperbolic Tangent(双曲正切) HTan(X) = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X))

Hyperbolic Secant(双曲正割) HSec(X) = 2 / (Exp(X) + Exp(-X))

Hyperbolic Cosecant(双曲余割) HCosec(X) = 2 / (Exp(X) - Exp(-X))

Hyperbolic Cotangent(双曲余切) HCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X))

Inverse Hyperbolic Sine(反双曲正弦) HArcsin(X) = Log(X + Sqr(X X + 1))

Inverse Hyperbolic Cosine(反双曲余弦) HArccos(X) = Log(X + Sqr(X X - 1))

Inverse Hyperbolic Tangent(反双曲正切) HArctan(X) = Log((1 + X) / (1 - X)) / 2

Inverse Hyperbolic Secant(反双曲正割) HArcsec(X) = Log((Sqr(-X X + 1) + 1) / X)

Inverse Hyperbolic Cosecant(反双曲余割) HArccosec(X) = Log((Sgn(X) Sqr(X X + 1) +1) / X)

Inverse Hyperbolic Cotangent(反双曲余切) HArccotan(X) = Log((X + 1) / (X - 1)) / 2

以 N 为底的对数 LogN(X) = Log(X) / Log(N)

函数名

参数

返回结果

Ascii

(char_expr)

返回表达式中第一个字符的ASCII编码

Char

(integer_expr)

将单字节的integer值转换为character值。Char通常作为ascii的反函数使用。Integer_expr必须是0到255之间的数。

返回的是char数据类型。如果结果值是多字节字符的第一字节,则字符将是未定的。

Charindex

(expression1,expression2)

查找expression1在expression2中的起始位置并返回表示起始位置的integer整数值。如果没有找到expression1则返回0。如果expression1包含通配符,将其按文字处理。

Char_length

(char_expr)

返回字符串表达式或text值的长度。对于表中列的可变长数据,在计算字符表达式长度时去掉尾空格。对于多字节字符集,字符长度小于字节数,使用系统函数来确定字节数。

Difference

(char_expr1,char_expr2)

返回表示两个soundex值不同的整数值。

Lower

(char_expr)

将大写字母转换成小写字母,返回character类型值

Itrim

(char_expr)

删除字符串表达式中的前导空格。只有与SQL中指定的字符集中的空格值等价的字符才被删除。

Patindex

(“%pattern%”,

char_expr[using{bytes|

chars|characters}])

返回在指定字符串中第一次出现pattern的起始位置的integer型数据,如果没有找到pattern则返回0。缺省情况下返回字符的偏移量(多个字节的字符串)必须指定using bytes。通配符”%”必须放在pattern的前面或后面。除非要找的位置为起始字符或结尾字符。该函数可被用于text数据

Replicate

(char_expr,integer_expr)

返回一个与char_expr的类型相同的字符串。该字符串是char_expr次的结果(当结果多于255个字节时,则只取前255个字节)。

Reverse

(expression)

逆转字符串或二进制数据的值。如果表达式是“abcd”则返回“dcba”;如果表达式是”0x12345000”,则返回”0x00054321

Right

(expression,integer_expr)

返回从右边开始指定个数的字符串或二进制expression的一部分。返回值同expression具有相同的数据类型

Rtrim

(char_expr)

删除尾空格。只有与SQL中指定的字符集中的空格值等价的字符才被删除。

Soundex

(char_expr)

返回由相邻的单字节或双字节正体字母组成的字符串的一个4字符的soundex代码

Space

(integer_expr)

返回integer_expr个单字节空格组成的字符串

Str

(approx_numeric[,length[,decimal]])

返回代表浮点数的字符串。Length指定返回的字符串数目(包括小数点、小数点左边和右边所有的数字和空格);decimal指定结果返回的小数位数;length和decimal是可选项,如果选定,则必须为非负数。缺省的length为10,省的decimal为0为了与指定的length相符,该函数四舍五入小数部分

Stuff

(char_expr1,start,length,char_expr2)

从char_expr1中删除start开始的length个字符,然后将char_expr2插入到char_expr2的start处。如果只删除字符而不插入字符,则必须将char_expr2指定为null,而不是“”,“”表示一个空格

Substring

(expression,start,length)

返回字符串或二进制钟的一部分。Start指定子串的开始位置。Length指定子串的长度。

Upper

(char_expr)

将小写字符串转换为大写字符串 二进制串 列名或它们之间的组合。把字符串放到单引号或双引号中

+

expression

拼接两个或更多的字符串、二进制串、列名或它们之间的组合。把字符串放到单引号或双引号中。

1绝对值

SQL:select abs(-1) value

O:select abs(-1) value from dual

2取整(大)

S:select ceiling(-1001) value

O:select ceil(-1001) value from dual

3取整(小)

S:select floor(-1001) value

O:select floor(-1001) value from dual

4取整(截取)

S:select cast(-1002 as int) value

O:select trunc(-1002) value from dual

5四舍五入

S:select round(123456,4) value 123460

O:select round(123456,4) value from dual 12346

6e为底的幂

S:select Exp(1) value 27182818284590451

O:select Exp(1) value from dual 271828182

7取e为底的对数

S:select log(27182818284590451) value 1

O:select ln(27182818284590451) value from dual; 1

8取10为底对数

S:select log10(10) value 1

O:select log(10,10) value from dual; 1

9取平方

S:select SQUARE(4) value 16

O:select power(4,2) value from dual 16

10取平方根

S:select SQRT(4) value 2

O:select SQRT(4) value from dual 2

11求任意数为底的幂

S:select power(3,4) value 81

O:select power(3,4) value from dual 81

12取随机数

S:select rand() value

O:select sysdbms_randomvalue(0,1) value from dual;

13取符号

S:select sign(-8) value -1

O:select sign(-8) value from dual -1

----------数学函数

14圆周率

S:SELECT PI() value 31415926535897931

O:不知道

15sin,cos,tan 参数都以弧度为单位

例如:select sin(PI()/2) value 得到1(SQLServer)

16Asin,Acos,Atan,Atan2 返回弧度

17弧度角度互换(SQLServer,Oracle不知道)

DEGREES:弧度-〉角度

RADIANS:角度-〉弧度

---------数值间比较

18 求集合最大值

S:select max(value) value from

(select 1 value

union

select -2 value

union

select 4 value

union

select 3 value)a

O:select greatest(1,-2,4,3) value from dual

19 求集合最小值

S:select min(value) value from

(select 1 value

union

select -2 value

union

select 4 value

union

select 3 value)a

O:select least(1,-2,4,3) value from dual

20如何处理null值(F2中的null以10代替)

S:select F1,IsNull(F2,10) value from Tbl

O:select F1,nvl(F2,10) value from Tbl

--------数值间比较

21求字符序号

S:select ascii('a') value

O:select ascii('a') value from dual

22从序号求字符

S:select char(97) value

O:select chr(97) value from dual

23连接

S:select '11'+'22'+'33' value

O:select CONCAT('11','22')||33 value from dual

23子串位置 --返回3

S:select CHARINDEX('s','sdsq',2) value

O:select INSTR('sdsq','s',2) value from dual

23模糊子串的位置 --返回2,参数去掉中间%则返回7

S:select patindex('%d%q%','sdsfasdqe') value

O:oracle没发现,但是instr可以通过第四霾问 刂瞥鱿执问BR> select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6

24求子串

S:select substring('abcd',2,2) value

O:select substr('abcd',2,2) value from dual

25子串代替 返回aijklmnef

S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value

O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual

26子串全部替换

S:没发现

O:select Translate('fasdbfasegas','fa','我' ) value from dual

27长度

S:len,datalength

O:length

28大小写转换 lower,upper

29单词首字母大写

S:没发现

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

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

S:select space(10)+'abcd' value

O:select LPAD('abcd',14) value from dual

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

S:select 'abcd'+space(10) value

O:select RPAD('abcd',14) value from dual

32删除空格

S:ltrim,rtrim

O:ltrim,rtrim,trim

33 重复字符串

S:select REPLICATE('abcd',2) value

O:没发现

34发音相似性比较(这两个单词返回值一样,发音相同)

S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')

O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual

SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差

返回0-4,4为同音,1最高

--------------日期函数

35系统时间

S:select getdate() value

O:select sysdate value from dual

36前后几日

直接与整数相加减

37求日期

S:select convert(char(10),getdate(),20) value

O:select trunc(sysdate) value from dual

select to_char(sysdate,'yyyy-mm-dd') value from dual

38求时间

S:select convert(char(8),getdate(),108) value

O:select to_char(sysdate,'hh24:mm:ss') value from dual

39取日期时间的其他部分

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

O:to_char函数 第二个参数决定

参数---------------------------------下表需要补充

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无效)

weekday dw (O不清楚)

Hour hh,hh12,hh24 (hh12,hh24 S无效)

minute mi, n (n O无效)

second ss, s (s O无效)

millisecond ms (O无效)

----------------------------------------------

40当月最后一天

S:不知道

O:select LAST_DAY(sysdate) value from dual

41本星期的某一天(比如星期日)

S:不知道

O:SELECT Next_day(sysdate,7) vaule FROM DUAL;

42字符串转时间

S:可以直接转或者select cast('2004-09-08'as datetime) value

O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;

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

S:select datediff(ss,getdate(),getdate()+123) value

O:直接用两个日期相减(比如d1-d2=123)

SELECT (d1-d2)246060 vaule FROM DUAL;

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

S:select dateadd(mi,8,getdate()) value

O:SELECT sysdate+8/60/24 vaule FROM DUAL;

45求不同时区时间

S:不知道

O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;

-----时区参数,北京在东8区应该是Ydt-------

AST ADT 大西洋标准时间

BST BDT 白令海标准时间

CST CDT 中部标准时间

EST EDT 东部标准时间

GMT 格林尼治标准时间

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

MST MDT 山区标准时间

NST 纽芬兰标准时间

PST PDT 太平洋标准时间

YST YDT YUKON标准时间

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

函数 Oracle Microsoft SQL Server

把字符转换为ASCII ASCII ASCII

字串连接 CONCAT (expression + expression)

把ASCII转换为字符 CHR CHAR

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

把字符转换为小写 LOWER LOWER

把字符转换为大写 UPPER UPPER

填充字符串的左边 LPAD N/A

清除开始的空白 LTRIM LTRIM

清除尾部的空白 RTRIM RTRIM

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

多次重复字符串 RPAD REPLICATE

字符串的语音表示 SOUNDEX SOUNDEX

重复空格的字串 RPAD SPACE

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

子串 SUBSTR SUBSTRING

替换字符 REPLACE STUFF

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

翻译字符串 TRANSLATE N/A

字符串长度 LENGTH DATELENGTH or LEN

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

列表中最小的字符串 LEAST N/A

如果为NULL则转换字串 NVL ISNULL

日期函数

函数 Oracle Microsoft SQL Server

日期相加 (date column +/- value) or

ADD_MONTHS DATEADD

两个日期的差 (date column +/- value) or

MONTHS_BETWEEN DATEDIFF

当前日期和时间 SYSDATE GETDATE()

一个月的最后一天 LAST_DAY N/A

时区转换 NEW_TIME N/A

日期后的第一个周日 NEXT_DAY N/A

代表日期的字符串 TO_CHAR DATENAME

代表日期的整数 TO_NUMBER

(TO_CHAR)) DATEPART

日期舍入 ROUND CONVERT

日期截断 TRUNC CONVERT

字符串转换为日期 TO_DATE CONVERT

如果为NULL则转换日期 NVL ISNULL

转换函数

函数 Oracle Microsoft SQL Server

数字转换为字符 TO_CHAR CONVERT

字符转换为数字 TO_NUMBER CONVERT

日期转换为字符 TO_CHAR CONVERT

字符转换为日期 TO_DATE CONVERT

16进制转换为2进制 HEX_TO_RAW CONVERT

2进制转换为16进制 RAW_TO_HEX CONVERT

其它行级别的函数

函数 Oracle Microsoft SQL Server

返回第一个非空表达式 DECODE COALESCE

当前序列值 CURRVAL N/A

下一个序列值 NEXTVAL N/A

如果exp1 = exp2, 返回null DECODE NULLIF

用户登录账号ID数字 UID SUSER_ID

用户登录名 USER SUSER_NAME

用户数据库ID数字 UID USER_ID

用户数据库名 USER USER_NAME

当前用户 CURRENT_USER CURRENT_USER

用户环境(audit trail) USERENV N/A

在CONNECT BY子句中的级别 LEVEL N/A

合计函数

函数 Oracle Microsoft SQL Server

Average AVG AVG

Count COUNT COUNT

Maximum MAX MAX

Minimum MIN MIN

Standard deviation STDDEV STDEV or STDEVP

Summation SUM SUM

Variance VARIANCE VAR or VARP

Oracle还有一个有用的函数EXTRACT,提取并且返回日期时间或时间间隔表达式中特定的时间域:

EXTRACT(YEAR FROM 日期)

select right(replicate('0', 1) + convert(varchar(10),1), 2)

楼主你可以直接运行上面的看看,是可以达到效果的。

convert(varchar(10),1)这个不用说你明白的,replicate('0', 1)是左位补0,第二个参数是控制要补几个0。

希望能帮助你!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12185499.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存