搜档网
当前位置:搜档网 › SqlServer 函数 大全

SqlServer 函数 大全

SqlServer 函数 大全
SqlServer 函数 大全

sql server使用convert来取得datetime日期数据

sql server使用convert来取得datetime日期数据,以下实例包含各种日期格式的转换语句及查询结果:

Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM

Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06

Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16

Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06

Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06

Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06

Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06

Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06

Select CONVERT(varchar(100), GETDATE(),: 10:57:46

Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06

Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16

Select CONVERT(varchar(100), GETDATE(), 12): 060516

Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937 Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967

Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47 Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157 Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16

Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47

Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250 Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006

Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16

Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006

Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006

Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006

Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006

Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006

Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49

Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM

Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006

Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16

Select CONVERT(varchar(100), GETDATE(), 112): 20060516

Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513

Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547

Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49

Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700

Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827

Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM

说明:

使用CONVERT:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

参数

expression

是任何有效的Microsoft? SQL Server? 表达式。。

data_type

目标系统所提供的数据类型,包括bigint 和sql_variant。不能使用用户定义的数据类型。

length

nchar、nvarchar、char、varchar、binary 或varbinary 数据类型的可选参数。

style

日期格式样式,借以将datetime 或smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或nvarchar 数据类型);或者字符串格式样式,借以将float、real、money 或smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或nvarchar 数据类型)。SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。

在表中,左侧的两列表示将datetime 或smalldatetime 转换为字符数据的style 值。给style 值加100 ,可获得包括世纪数位的四位年份(yyyy)。

不带世纪数位(yy) 带世纪数位(yyyy)

标准

输入/输出**

- 0 或100 (*) 默认值mon dd yyyy hh:miAM(或PM)

1 101 美国mm/dd/yyyy

2 102 ANSI yy.mm.dd

3 103 英国/法国dd/mm/yy

4 104 德国dd.mm.yy

5 105 意大利dd-mm-yy

6 106 - dd mon yy

7 107 - mon dd, yy

8 108 - hh:mm:ss

- 9 或109 (*) 默认值+ 毫秒mon dd yyyy hh:mi:ss:mmmAM(或PM)

10 110 美国mm-dd-yy

11 111 日本yy/mm/dd

12 112 ISO yymmdd

- 13 或113 (*) 欧洲默认值+ 毫秒dd mon yyyy hh:mm:ss:mmm(24h)

14 114 - hh:mi:ss:mmm(24h)

- 20 或120 (*) ODBC 规范yyyy-mm-dd hh:mm:ss[.fff]

- 21 或121 (*) ODBC 规范(带毫秒)yyyy-mm-dd hh:mm:ss[.fff]

- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss.mmm(不含空格)

- 130* Hijri**** dd mon yyyy hh:mi:ss:mmmAM

- 131* Hijri**** dd/mm/yy hh:mi:ss:mmmAM

* 默认值(style 0 或100、9 或109、13 或113、20 或120、21 或121)始终返回世纪数位(yyyy)。** 当转换为datetime时输入;当转换为字符数据时输出。

*** 专门用于XML。对于从datetime或smalldatetime 到character 数据的转换,输出格式如表中所示。

对于从float、money 或smallmoney 到character 数据的转换,输出等同于style 2。对于从real 到character 数据的转换,输出等同于style 1。

****Hijri 是具有几种变化形式的日历系统,Microsoft? SQL Server? 2000 使用其中的科威特算法。

重要默认情况下,SQL Server 根据截止年份2049 解释两位数字的年份。即,两位数字的年份49 被解释为

2049,而两位数字的年份50 被解释为1950。许多客户端应用程序(例如那些基于OLE 自动化对象的客户端

应用程序)都使用2030 作为截止年份。SQL Server 提供一个配置选项("两位数字的截止年份"),借以更

改SQL Server 所使用的截止年份并对日期进行一致性处理。然而最安全的办法是指定四位数字年份。

当从smalldatetime 转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。当从datetime 或smalldatetime 值进行转换时,可以通过使用适当的char 或varchar 数据类型长度来截断不需要的日期部分

SQL2005一个不起眼但很实用的函数

https://www.sodocs.net/doc/4b17208511.html,2008年09月24日社区交流

关键字:DataGuard checkpoint 动态查询synonyms 卸载SQL 2005 SQL Server群集

本文详细介绍SQL2005一个不起眼但很实用的函数

COALESCE

返回其参数中的第一个非空表达式,当你要在n个字段中选取某一个非空值可以用它,比如下面语句

select Coalesce(null,null,1,2,null)union

select Coalesce(null,11,12,13,null)union

select Coalesce(111,112,113,114,null)

/*---返回结果-----

1

11

111

-----------------*/

而与他等价的case when嵌套需要一大堆代码

SQL Server字符串处理函数大全

所属类别:SQL SERVER

推荐指数:★★★☆

文档人气:9055

本周人气:127

发布日期:2008-2-18

select 字段1 from 表1 where 字段1.IndexOf("云")=1;

这条语句不对的原因是indexof()函数不是sql函数,改成sql对应的函数就可以了。

left()是sql函数。

select 字段1 from 表1 where charindex('云',字段1)=1; 字符串函数对二进制数据、字符串和表达式执

行不同的运算。此类函数作用于CHAR、VARCHAR、BINARY、和VARBINARY 数据类型以及可以隐式转换为CHAR

或VARCHAR的数据类型。可以在SELECT 语句的SELECT 和WHERE 子句以及表达式中使用字符串函数。常用的字符串函数有:

一、字符转换函数

1、ASCII()

返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用…?括起来,但含其

它字符的字符串必须用…?括起来使用,否则会出错。

2、CHAR()

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

3、LOWER()和UPPER()

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

4、STR()

把数值型数据转换为字符型数据。

STR ([,length[,]])

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

,decimal 缺省值为0。

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

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

先服从length ,再取decimal ;

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

二、去空格函数

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

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

三、取子串函数

1、left()

LEFT ()

返回character_expression 左起integer_expression 个字符。

2、RIGHT()

RIGHT ()

返回character_expression 右起integer_expression 个字符。

3、SUBSTRING()

SUBSTRING (,length)

返回从字符串左边第starting_ position 个字符起length个字符的部分。

四、字符串比较函数

1、CHARINDEX()

返回字符串中某个指定的子串出现的开始位置。

CHARIND EX ()

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

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

2、PATINDEX()

返回字符串中某个指定的子串出现的开始位置。

PATINDEX ()其中子串表达式前后必须有百分号“%”否则

返回值为0。

与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于CHAR、VARCHAR 和

TEXT 数据类型。

五、字符串操作函数

1、QUOTENAME()

返回被特定字符括起来的字符串。

QUOTENAME ([,quote_ character]) 其中quote_ character 标明括字符串所

用的字符,缺省值为“[]”。

2、REPLICATE()

返回一个重复character_expression 指定次数的字符串。

REPLICATE (character_expression integer_expression) 如果integer_expression 值为负值,则返回NULL

3、REVERSE()

将指定的字符串的字符排列顺序颠倒。

REVERSE () 其中character_expression 可以是字符串、常数或一个列的值。

4、REPLACE()

返回被替换了指定子串的字符串。

REPLACE () 用

string_expression3 替换在string_expression1 中的子串string_expression2。

4、SPACE()

返回一个有指定长度的空白字符串。

SPACE () 如果integer_expression 值为负值,则返回NULL 。

5、STUFF()

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

STUFF () 如果起始位置为负或长度值为负,或者起始位置大于character_expression1 的长度,则返回NULL 值。如果length 长度大于character_expression1 中start_ position 以右的长度,则

character_expression1

只保留首字符。

六、数据类型转换函数

1、CAST()

CAST ( AS [ length ])

2、CONVERT()

CONVERT ([ length ], [,style])

1)data_type为SQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。

2)length用于指定数据的长度,缺省值为30。

3)把CHAR或VARCHAR类型转换为诸如INT或SAMLLINT这样的INTEGER类型、结果必须是带正号或负号的数值。

4)TEXT类型到CHAR或VARCHAR类型转换最多为8000个字符,即CHAR或VARCHAR数据类型是最大长度。

5)IMAGE类型存储的数据转换到BINARY或VARBINARY类型,最多为8000个字符。

6)把整数值转换为MONEY或SMALLMONEY类型,按定义的国家的货币单位来处理,如人民币、美元、英镑等。

7)BIT类型的转换把非零值转换为1,并仍以BIT类型存储。

8)试图转换到不同长度的数据类型,会截短转换值并在转换值后显示“+”,以标识发生了这种截断。

9)用CONVERT()函数的style 选项能以不同的格式显示日期和时间。style 是将DATATIME 和SMALLDATETIME

数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。

七、日期函数

1、day(date_expression)

返回date_expression中的日期值

2、month(date_expression)

返回date_expression中的月份值

3、year(date_expression)

返回date_expression中的年份值

4、DATEADD()

DATEADD ()

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

5、DATEDIFF()

DATEDIFF ()

返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其结果值是一个带有正负号的

整数值。

6、DATENAME()

DATENAME ()

以字符串的形式返回日期的指定部分此部分。由datepart 来指定。

7、DATEPART()

DATEPART ()

以整数值的形式返回日期的指定部分。此部分由datepart 来指定。

DATEPART (dd,date) 等同于DAY (date)

DATEPART (mm,date) 等同于MONTH (date)

DATEPART (yy,date) 等同于YEAR (date)

8、GETDATE()

以DATETIME 的缺省格式返回系统当前的日期和时间。

SQL Server函数大全收藏

--聚合函数

use pubs

go

select avg(distinct price) --算平均数

from titles

where type='business'

go

use pubs

go

select max(ytd_sales) --最大数

from titles

go

use pubs

go

select min(ytd_sales) --最小数

from titles

go

use pubs

go

select type,sum(price),sum(advance) --求和

from titles

group by type

order by type

go

use pubs

go

select count(distinct city) --求个数

from authors

go

use pubs

go

select stdev(royalty) --返回给定表达式中所有值的统计标准偏差from titles

go

use pubs

go

select stdevp(royalty) --返回表达式中所有制的填充统计标准偏差

from titles

go

use pubs

go

select var(royalty) --返回所有值的统计方差

from titles

go

use pubs

go

select varp(royalty) --返回所有值的填充的统计方差

from titles

go

--数学函数

select sin(23.45),atan(1.234),rand(),PI(),sign(-2.34) --其中rand是获得一个随机数

--配置函数

SELECT @@VERSION --获取当前数据库版本

SELECT @@LANGUAGE --当前语言

--时间函数

select getdate() as 'wawa_getdate' --当前时间

select getutcdate() as 'wawa_getutcdate' --获取utc时间

select day(getdate()) as 'wawa_day' --取出天

select month(getdate()) as 'wawa_month' --取出月

select year(getdate()) as 'wawa_year' --取出年

select dateadd(d,3,getdate()) as wawa_dateadd --加三天,注意'd'表示天,'m'表示月,'yy'表示年,下面一样

select datediff(d,'2004-07-01','2004-07-15') as wawa_datediff --计算两个时间的差

select datename(d,'2004-07-15') as wawa_datename --取出时间的某一部分

select datepart(d,getdate()) as wawa_datepart --取出时间的某一部分,和上面的那个差不多

--字符串函数

select ascii(123) as '123',ascii('123') as '"123"',ascii('abc') as '"abc"' --转换成ascii码

select char(123),char(321),char(-123) --根据ascii转换成字符

select lower('ABC'),lower('Abc'),upper('Abc'),upper('abc') --转换大小写

select str(123.45,6,1), str(123.45,2,2) --把数值转换成字符串

select ltrim(' "左边没有空格"') --去空格

select rtrim('"右边没有空格" ') --去空格

select ltrim(rtrim(' "左右都没有空格" ')) --去空格

select left('sql server',3),right('sql server',6) --取左或者取右

use pubs

select au_lname,substring(au_fname,1,1) --取子串

from authors

order by au_lname

select charindex('123','abc123def',2) --返回字符串中指定表达式的起始位置

select patindex('123','abc123def'),patindex('%123%','abc123def') --返回表达式中某模式第一次出现

的起始位置

select quotename('abc','{'),quotename('abc') --返回由指定字符扩住的字符串

select reverse('abc'),reverse('上海') --颠倒字符串顺序

select replace('abcdefghicde','cde','xxxx') --返回呗替换了指定子串的字符串

select space(5),space(-2)

--系统函数

select host_name() as 'host_name',host_id() as 'host_id',user_name() as 'user_name',user_id() as

'user_id',db_name() as 'db_name'

--变量的定义使用

--声明局部变量

declare @mycounter int

declare @last_name varchar(30),@fname varchar(20),@state varchar(2) --一下声明多个变量

--给变量赋值

use northwind

go

declare @firstnamevariable varchar(20),

@regionvariable varchar(30)

set @firstnamevariable='anne' --可以用set,也可以用select给变量赋值,微软推荐用set,但select在选择

一个值直接赋值时很有用

set @regionvariable ='wa'

select lastname,firstname,title --用声明并赋值过的变量构建一个Select语句并查询

from employees

where firstname= @firstnamevariable or region=@regionvariable

go

--全局变量

select @@version --返回数据库版本

select @@error --返回最后的一次脚本错误

select @@identity --返回最后的一个自动增长列的id

--while,break,continue的使用

--首先计算所有数的平均价格,如果低于30的话进入循环让所有的price翻倍,

--里面又有个if来判断如果最大的单价还大于50的话,退出循环,否则继续循环,知道最大单价大于50就break 出

循环,呵呵,

--我分析的应该对吧.

use pubs

go

while (select avg(price) from titles) <$30

begin

update titles

set price=price*2

select max(price) from titles

if(select max(price) from titles) >$50

break

else

continue

end

print 'too much for the marker to bear'

--事务编程经典例子

--begin transaction是开始事务,commit transaction是提交事务,rollback transaction是回滚事务

--这个例子是先插入一条记录,如果出现错误的话就回滚事务,也就是取消,并直接return(返回),如果没错的话就commit 提交这个事务了哦

--上面的那个return返回可以返回一个整数值,如果这个值是0的话就是执行的时候没出错,如果出错了就是一个负数,

--这个return也可以用在存储过程中,可用用exec @return_status= pro_name来获取这个值

use pubs

go

begin tran mytran

insert into stores(stor_id,stor_name)

values('333','my books')

go

insert into discounts(discounttype,stor_id,discount)

values('清仓甩卖','9999',50.00)

if @@error<>0

begin

rollback tran mytran

print '插入打折记录出错'

return

end

commit tran mytran

--事务处理的保存点示例

--做了事务保存点后可以rollback(回滚)到指定的保存点,不至于所有的操作都不能用

use pubs

go

select * from stores

begin transaction testsavetran

insert into stores(stor_id,stor_name)

values('1234','W.Z.D Book')

save transaction before_insert_data2

go

insert into stores(stor_id,stor_name)

values('5678','foreat Books')

go

rollback transaction before_insert_data2

select * from stores

--存储存储过程

use pubs

if exists(select name from sysobjects where name= 'proc_calculate_taxes' and type='P')

drop procedure proc_calculate_taxes

go

create procedure proc_calculate_taxes (@p1 smallint=42,@p2 char(1),@p3 varchar(8)='char') as

select *

from titles

--执行过程

EXECUTE PROC_CALCULATE_TAXES @P2='A'

本文来自CSDN博客,转载请标明出处:

https://www.sodocs.net/doc/4b17208511.html,/huwuling922/archive/2009/04/05/4049883.aspx

SQL SERVER 2008 函数大全- 字符串函数

豆豆网技术应用频道2009年04月11日【字号:小中大】收藏本文

关键字:select 子表树企业管理器DBCC PAGE REVERT

SQL SERVER 2008 函数大全- 字符串函数。

/* 字符函数*/

/* 返回字符表达式中最左侧字符的ASCII代码值*/

select Ascii('a') --a:97,A:65

/* 将整数ASCII代码转换为字符*/

select Char(97)--97:a,65:A

/* 返回表达式中指定字符的开始位置*/

select Charindex('b','abcdefg',5)

/* 以整数返回两个字符表达式的SOUNDEX值之差*/

select Difference('bet','bit')--3

/* 返回字符表达式最左侧指定数目的字符*/

select Left('abcdefg',3)--abc

/* 返回给定字符串表达的字符数*/

select Len('abcdefg')--7

/* 返回将大写字符转换为小字符的字符表达式*/

select Lower('ABCDEFG')--abcdefg

/* 返回删除了前导空格之后字符表达式*/

select Ltrim(' abcdefg')--abcdefg

/* 返回具有给定的整数代码的UNICODE字符*/

select Nchar(65)--A

/* 返回指定表达式中模式第一次出现的开始位置*/

select Patindex('%_cd%','abcdefg')--2

/* 返回为成为有效的SQL SERVER分隔标识符而添加了分隔符的UNICODE字符串*/ select Quotename('create table')

/* 用第三个表达式替换第一个表达式中出现的第二个表达式*/

select Replace('abcdefg','cd','xxx')--abxxxefg

/* 按指定次数重复表达式*/

select Replicate('abc|',4)--abc|abc|abc|abc|

/* 返回字符表达式的逆向表达式*/

select Reverse('abc')--cba

/* 返回字符表达式右侧指定数目的字符*/

select Right('abcd',3)--bcd

/* 返回截断了所有尾随空格之后的字符表达式*/

select Rtrim('abcd ')--abcd

/* 返回由四个字符表达的SOUNDEX代码*/

select Soundex('abcd')--A120

/* 返回由重复空格组成的字符串*/

select Space(10)--[ ]

/* 返回从默认表达转换而来的字符串*/

select Str(100)--[ 100]

/* */

select Str(100,3)--[100]

/* */

select Str(14.4444,5,4)--[14.44]

/* 删除指定长度的字符,并在指定的起点处插入另一组字符*/ select Stuff('abcdefg',2,4,'xxx')--axxxfg

/* 返回字符表达式,二进制,文本表达式或图像表达的一部分*/ select Substring('abcdefg',2,3)--bcd

/* 返回表达第一个字符的UNICODE整数值*/

select Unicode('a')--97

/* 返回将小写字符转换为大写字符的字符表达式*/

select Upper('a')--'A'

SQL Server函数大全[转]

--聚合函数

use pubs

go

select avg(distinct price) --算平均数

from titles

where type='business'

go

use pubs

go

select max(ytd_sales) --最大数

from titles

go

use pubs

go

select min(ytd_sales) --最小数

from titles

go

use pubs

go

select type,sum(price),sum(advance) --求和

from titles

group by type

order by type

go

use pubs

go

select count(distinct city) --求个数

from authors

go

use pubs

go

select stdev(royalty) --返回给定表达式中所有值的统计标准偏差

from titles

go

use pubs

go

select stdevp(royalty) --返回表达式中所有制的填充统计标准偏差

from titles

go

use pubs

go

select var(royalty) --返回所有值的统计方差

from titles

go

use pubs

go

select varp(royalty) --返回所有值的填充的统计方差

from titles

go

--数学函数

select sin(23.45),atan(1.234),rand(),PI(),sign(-2.34) --其中rand是获得一个随机数--配置函数

SELECT @@VERSION --获取当前数据库版本

SELECT @@LANGUAGE --当前语言

--时间函数

select getdate() as 'wawa_getdate' --当前时间

select getutcdate() as 'wawa_getutcdate' --获取utc时间

select day(getdate()) as 'wawa_day' --取出天

select month(getdate()) as 'wawa_month' --取出月

select year(getdate()) as 'wawa_year' --取出年

select dateadd(d,3,getdate()) as wawa_dateadd --加三天,注意'd'表示天,'m'表示月,'yy'表示年,下面一样

select datediff(d,'2004-07-01','2004-07-15') as wawa_datediff --计算两个时间的差

select datename(d,'2004-07-15') as wawa_datename --取出时间的某一部分

select datepart(d,getdate()) as wawa_datepart --取出时间的某一部分,和上面的那个差不多

--字符串函数

select ascii(123) as '123',ascii('123') as '"123"',ascii('abc') as '"abc"' --转换成ascii码

select char(123),char(321),char(-123) --根据ascii转换成字符

select lower('ABC'),lower('Abc'),upper('Abc'),upper('abc') --转换大小写

select str(123.45,6,1), str(123.45,2,2) --把数值转换成字符串

select ltrim(' "左边没有空格"') --去空格

select rtrim('"右边没有空格" ') --去空格

select ltrim(rtrim(' "左右都没有空格" ')) --去空格

select left('sql server',3),right('sql server',6) --取左或者取右

use pubs

select au_lname,substring(au_fname,1,1) --取子串

from authors

order by au_lname

select charindex('123','abc123def',2) --返回字符串中指定表达式的起始位置

select patindex('123','abc123def'),patindex('%123%','abc123def') --返回表达式中某模式第一次出现

的起始位置

select quotename('abc','{'),quotename('abc') --返回由指定字符扩住的字符串

select reverse('abc'),reverse('上海') --颠倒字符串顺序

select replace('abcdefghicde','cde','xxxx') --返回呗替换了指定子串的字符串

select space(5),space(-2)

--系统函数

select host_name() as 'host_name',host_id() as 'host_id',user_name() as 'user_name',user_id() as

'user_id',db_name() as 'db_name'

--变量的定义使用

--声明局部变量

declare @mycounter int

declare @last_name varchar(30),@fname varchar(20),@state varchar(2) --一下声明多个变量

--给变量赋值

use northwind

go

declare @firstnamevariable varchar(20),

@regionvariable varchar(30)

set @firstnamevariable='anne' --可以用set,也可以用select给变量赋值,微软推荐用set,但select在选择

一个值直接赋值时很有用

set @regionvariable ='wa'

select lastname,firstname,title --用声明并赋值过的变量构建一个Select语句并查询

from employees

where firstname= @firstnamevariable or region=@regionvariable

go

--全局变量

select @@version --返回数据库版本

select @@error --返回最后的一次脚本错误

select @@identity --返回最后的一个自动增长列的id

--while,break,continue的使用

--首先计算所有数的平均价格,如果低于30的话进入循环让所有的price翻倍,

--里面又有个if来判断如果最大的单价还大于50的话,退出循环,否则继续循环,知道最大单价大于50就break 出

循环,呵呵,

--我分析的应该对吧.

use pubs

while (select avg(price) from titles) <$30

begin

update titles

set price=price*2

select max(price) from titles

if(select max(price) from titles) >$50

break

else

continue

end

print 'too much for the marker to bear'

--事务编程经典例子

--begin transaction是开始事务,commit transaction是提交事务,rollback transaction是回滚事务

--这个例子是先插入一条记录,如果出现错误的话就回滚事务,也就是取消,并直接return(返回),如果没错的话就commit 提交这个事务了哦

--上面的那个return返回可以返回一个整数值,如果这个值是0的话就是执行的时候没出错,如果出错了就是一个负数,

--这个return也可以用在存储过程中,可用用exec @return_status= pro_name来获取这个值

use pubs

go

begin tran mytran

insert into stores(stor_id,stor_name)

values('333','my books')

go

insert into discounts(discounttype,stor_id,discount)

values('清仓甩卖','9999',50.00)

if @@error<>0

begin

rollback tran mytran

print '插入打折记录出错'

return

SQLServer(多语句表值函数代码)

SQLServer(多语句表值函数代码) 代码如下: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go CREATE FUNCTION [dbo].[ufnGetContactInformation](@ContactID int) RETURNS @retContactInformation TABLE ( -- Columns returned by the function [ContactID] int PRIMARY KEY NOT NULL, [FirstName] [nvarchar](50) NULL, [LastName] [nvarchar](50) NULL, [JobTitle] [nvarchar](50) NULL, [ContactType] [nvarchar](50) NULL ) AS -- Returns the first name, last name, job title and contact type for the specified contact. BEGIN

DECLARE @FirstName [nvarchar](50), @LastName [nvarchar](50), @JobTitle [nvarchar](50), @ContactType [nvarchar](50); -- Get common contact information SELECT @ContactID = ContactID, @FirstName = FirstName, @LastName = LastName FROM [Person].[Contact] WHERE [ContactID] = @ContactID; SET @JobTitle = CASE -- Check for employee WHEN EXISTS(SELECT * FROM [HumanResources].[Employee] e WHERE e.[ContactID] = @ContactID) THEN (SELECT [Title] FROM [HumanResources].[Employee] WHERE [ContactID] = @ContactID) -- Check for vendor

列举SQLServer几个基本的函数的应用.docx

-聚合函数 use pubs go select avg(distinct price) 一算平均数 from titles where type=*business' go use pubs go select max(ytd_sales) 一最大数 from titles go use pubs go select min(ytd_sales)"最小数 from titles go use pubs go select type,sum(price),sum(adva nee) —求和 from titles group by type order by type go use pubs go select count(distinct city) 一求个数 from authors go use pubs go select stdev(royalty) ■■返回给定表达式中所有值的统计标准偏差from titles go use pubs go select stdevp(royalty)-返回表达式中所有制的填充统计标准偏差

from titles go use pubs go select var(royalty)"返回所有值的统计方差 from titles go use pubs go select varp(royalty)-返回所有值的填充的统计方差 from titles go -数学函数 select sin(23.45),atan(1.234),rand(),PI(),sign(-2.34) 一其中rand 是获得一个随机数 -配置函数 SELECT @@VERSION 一获取当前数据库版本 SELECT @@LANGUAGE -当前语言 -时间函数 select getdate() as 'wawa_getdate' 一当前时间 select getutcdate() as !wawa_getutcdate' 一获取utc 时间 select day(getdate()) as 'wawa_day' 一取出天 select month(getdate()) as 'wawa_month' 一取岀月 select year(getdate()) as 'wawa_year' 一取出年 select dateadd(d,3,getdate()) as wawa_dateadd ?■力口三天,注意'd‘表示天,'m'表示月,yy表示年,下而一样 select datediff(d,*2004-07-01 *,*2004-07-15') as wawa_datediff 一计算两个时间的差 select datename(d,*2004-07-15!) as wawa_datename "取岀时间的某一部分select datepart(d,getdate()) as wawa_datepart 一取出时间的某一部分,和上面的那个差不多 "字符串函数 select ascii(123) as ,123',ascii('123') as ,H123m,ascii(,abc,) as H,abc M,一转换成ascii 码 select char(123),char(321 ),char(-123) ?■根据ascii 转换成字符 select lower('ABC'),lower('Abc'),upper('Abc'),upper('abc') 一转换大小写 select str(123.45,6,1), str(123.45,2,2) 一把数值转换成字符串

SQLServer和Oracle语法的差异

SQLServer和Oracle是大家经常用到的数据库,在此总结出这些常用函数以供大家参考。 数学函数 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3.取整(小) S:select floor(-1.001) value O:select floor(-1.001) value from dual 4.取整(截取) S:select cast(-1.002 as int) value O:select trunc(-1.002) value from dual 5.四舍五入 S:select round(1.23456,4) value 1.23460 O:select round(1.23456,4) value from dual 1.2346 6.e为底的幂 S:select Exp(1) value 2.7182818284590451 O:select Exp(1) value from dual 2.71828182 7.取e为底的对数 S:select log(2.7182818284590451) value 1 O:select ln(2.7182818284590451) 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.求任意数为底的幂

SQLSERVER操作命令

SQLSERVER数据库操作 ******操作前,请确定SQL的服务已经开启******** 一:登录进入sql数据库 1、开始---所有程序---Microsoft SQL Server 2005---SQL Server Management Studio Express 2、此时出现“连接到服务器”的对话框, “服务器名称”设置为SQL数据库所在机器的IP地址 “身份验证”设置为SQL Server身份验证或者Windows 身份验证 填写登录名和密码后,点击“连接”按钮,即可进入到SQL数据库操作界面。 二:新建数据库 登录进去后,右击“数据库”,选择—“新建数据库” 设置数据库名称,在下面的选项卡中还可以设置数据库的初始大小,自动增长,路径。 点击确定,一个数据库就建好了。 三:如何备份的数据库文件。 登录进入后,右击相应的需要备份数据库----选择“任务” 目标下的备份到,点击“添加”按钮可以设置备份数据库保存的路径。 四:如何还原备份的数据库文件。(以本地机器为例子) 1、设置服务器名称,点击右边的下拉框的三角,选择“浏览更多…”。 此时出现查找服务器对话框,选择“本地服务器”---点开“数据库引擎”前面 的三角---选中出现的服务器名称—确定。 (注:可以在“网络服务器”选项卡中设置网络服务器) 2、设置身份验证,选择为“windows身份验证” 3、点击连接按钮,进入数据库管理页面 4、右击“数据库”,选择“还原数据库”,出现还原数据库的对话框 还原的目标----目标数据库,这里设置数据库的名字 还原的源----选择“源设备”,在弹出的对话框中点击“添加”按钮,找到所备 份的数据库文件,确定。 5、此时,在还原数据库对话框中会出现所还原的数据库的信息。在前面选中所需还 原的数据库。确定。 6、为刚刚还原的数据库设置相应的用户。 a点开“安全性”---右击“登录名”---新建登录名 b 设置登录名(假如为admin),并设置为SQL Server身份验证,输入密码,去除 “强制实施密码策略”前的勾。 C 找到导入的数据库,右击此数据库----选择“属性”,在选择页中,点击“文件” 设置所有者,点击右边的按钮,选择“浏览”,找到相应的用户(如admin)。确 定。。 7、此时重新以admin的身份进入,就可操作相应的数据库。

sqlserver日期时间函数

sql server日期时间函数 Sql Server中的日期与时间函数 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数。 select datediff(day,'2004-09-01','2004-09-18') --返回:17 4. datepart 返回代表指定日期的指定日期部分的整数。 SELECT DATEPART(month, '2004-10-15') --返回 10 5. datename 返回代表指定日期的指定日期部分的字符串 SELECT datename(weekday, '2004-10-15') --返回:星期五 6. day(), month(),year() --可以与datepart对照一下 select 当前日期=convert(varchar(10),getdate(),120) ,当前时间=convert(varchar(8),getdate(),114) select datename(dw,'2004-10-15') select 本年第多少周=datename(week,'2004-10-15') ,今天是周几=datename(weekday,'2004-10-15') 函数参数/功能 GetDate( ) 返回系统目前的日期与时间 DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1 DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期 DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值

SQLSERVER和MYSQL语法和关键字的区别详解

SQL Server和MySql语法和关键字的区别 ——用于SQLServer到MySql的转换 对于程序开发人员而言,目前使用最流行的两种后台数据库即为MySQL and SQL Server。这两者最基本的相似之处在于数据存储和属于查询系统。你可以使用SQL来访问这两种数据库的数据,因为它们都支持ANSI-SQL。还有,这两种数据库系统都支持二进制关键词和关键索引,这就大大地加快了查询速度。同时,二者也都提供支持XML的各种格式。除了在显而易见的软件价格上的区别之外,这两个产品还有什么明显的区别吗?在这二者之间你是如何选择的?让我们看看这两个产品的主要的不同之处,包括发行费用,性能以及它们的安全性。 ◆根本的区别是它们遵循的基本原则 二者所遵循的基本原则是它们的主要区别:开放vs保守。SQL服务器的狭隘的,保守的存储引擎与MySQL服务器的可扩展,开放的存储引擎绝然不同。虽然你可以使用SQL服务器的Sybase引擎,但MySQL能够提供更多种的选择,如MyISAM,Heap,InnoDB,and Berkeley DB。MySQL不完全支持陌生的关键词,所以它比SQL服务器要少一些相关的数据库。同时,MySQL也缺乏一些存储程序的功能,比如MyISAM引擎联支持交换功能。 ◆发行费用:MySQL不全是免费,但很便宜 当提及发行的费用,这两个产品采用两种绝然不同的决策。对于SQL服务器,获取一个免费的开发费用最常的方式是购买微软的Office或者Visual Studio的费用。但是,如果你想用于商业产品的开发,你必须还要购买SQL Server Standard Edition。学校或非赢利的企业可以不考虑这一附加的费用。 ◆性能:先进的MySQL 纯粹就性能而言,MySQL是相当出色的,因为它包含一个缺省桌面格式 MyISAM。MyISAM数据库与磁盘非常地兼容而不占用过多的CPU和内存。 MySQL可以运行于Windows系统而不会发生冲突,在UNIX或类似UNIX 系统上运行则更好。你还可以通过使用64位处理器来获取额外的一些性能。 因为MySQL在内部里很多时候都使用64位的整数处理。Yahoo!商业网站就使用MySQL作为后台数据库。 当提及软件的性能,SQL服务器的稳定性要比它的竞争对手强很多。但是,这些特性也要付出代价的。比如,必须增加额外复杂操作,磁盘存储,内存损耗等等。如果你的硬件和软件不能充分支持SQL服务器,我建议你最好选择其他如DBMS数据库,因为这样你会得到更好的结果。 ◆安全功能

SQLServer常用关键字数据类型和常用语法

SQL Server 2008 常用关键字、数据类型和常用语法 常用关键字: SQL server 2008一共大约有180多个关键字。简要分为主要关键字、辅助关键字和函数类关键字。本文就常用的这三类关键字进行语法说明和用例。 说明:1、比较好的习惯是,数据库名以D_开头,表名用T_开头,字段名以F_开头,这样可以防止和关键字重名。 2、如果确实用到了系统关键字,就要在关键上加[]方括号,以与关键字进行区别。例如有一个用户表被命名为USER,则查询该表内容的时候:SELECT * FROM USER语句是错误的,应该是SELECT * FROM [USER]。因为USER是关键字。

数据类型: SQL Server 2008一共有36种数据类型。具体如下:

常用语法: 一、数据库 【创建数据库】 CREATE DATABASE 【修改数据库】 ALTER DATABASE 【删除数据库】 DROP DATABASE 二、表结构 【创建数据表】 1、设定字段是允许空,非空、标识列,自增和主键约束。 CREATE TABLE T_CUSTOMER--表名 (CUSTOMERID INT IDENTITY(1,1),--客户ID,标识列,从开始,每次自增 COMPANYNAME NVARCHAR(50)NOT NULL,--,如果不显示指明NOT NULL,系统默认是允许空的USERNAME NVARCHAR(10)NOT NULL,--联系人姓名,非空 PHONENUMBER CHAR(11)NULL,--联系电话,允许为空 CONSTRAINT T_CUSTOMER_PrimaryKey PRIMARY KEY (CUSTOMERID))--设定USERID为主键,用括号括起来 /*每个单词之间是空格隔开,每个字段之间用单引号隔开,整个字段定义部分用括号括起来*/ /*T_RegUser_PrimaryKey是约束名*/ 2、设定字段是UNIQUEIDENTIFIER数据类型,唯一性约束,CHECK约束和默认值约束。

sqlserver常用函数

Sql Server 常用函数 1,统计函数avg, count, max, min, sum 2, 3,多数聚会不统计值为null的行。可以与distinct一起使用去掉重复的行。可以与group by 来分组4, 5, 2,数学函数 6, 7, SQRT 8, ceiling(n) 返回大于或者等于n的最小整数 9, floor(n), 返回小于或者是等于n的最大整数 10,round(m,n), 四舍五入,n是保留小数的位数 11,abs(n) 12,sign(n), 当n>0, 返回1,n=0,返回0,n<0, 返回-1 13,PI(), 3.1415.... 14,rand(),rand(n), 返回0-1之间的一个随机数 15,3,字符串函数 16, 17,ascii(), 将字符转换为ASCII码, ASCII('abc') = 97 18,char(), ASCII 码转换为字符 19,low(),upper() 20,str(a,b,c)转换数字为字符串。a,是要转换的字符串。b是转换以后的长度,c是小数位数。 str(123.456,8,2) = 123.46 21,ltrim(), rtrim() 去空格 22,left(n), right(n), substring(str, start,length) 截取字符串 23,charindex(子串,母串),查找是否包含。返回第一次出现的位置,没有返回0 24,patindex('%pattern%', expression) 功能同上,可是使用通配符 25,replicate('char', rep_time), 重复字符串 26,reverse(char),颠倒字符串 27,replace(str, strold, strnew) 替换字符串 28,space(n), 产生n个空行 29,stuff(), SELECT STUFF('abcdef', 2, 3, 'ijklmn') ='aijklmnef', 2是开始位置,3是要从原来串中删除的字符长度,ijlmn是要插入的字符串。 30,3,类型转换函数: 31, 32,cast, cast( expression as data_type), Example: 33,SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales FROM titles WHERE CAST(ytd_sales AS char(20)) LIKE '3%' 34,convert(data_type, expression) 35,4,日期函数 36, 37,day(), month(), year() 38,dateadd(datepart, number, date), datapart指定对那一部分加,number知道加多少,date指定在谁的基础上加。datepart的取值包括,

sqlserver日期函数

sqlserver日期函数 SQLServer时间日期函数详解,SQLServer,时间日期, 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的datetime 值 例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:0 0.000 3. datediff 返回跨两个指定日期的日期和时间边界数。 select datediff(day,'2004-09-01','2004-09-18') --返回:17 select datediff(day,'2004-09-18','2004-09-01') --返回:-17 4. datepart 返回代表指定日期的指定日期部分的整数。 SELECT DATEPART(month, '2004-10-15') --返回10 5. datename 返回代表指定日期的指定日期部分的字符串 SELECT datename(weekday, '2004-10-15') --返回:星期五 6. day(), month(),year() --可以与datepart对照一下 select 当前日期=convert(varchar(10),getdate(),120) ,当前时间=convert(varchar(8),getdate(),114) select datename(dw,'2004-10-15') select 本年第多少周=datename(week,'2004-10-15') ,今天是周几=datename(weekday,'2004-10-15') 函数参数/功能 GetDate( ) 返回系统目前的日期与时间 DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1 DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期 DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称 参数interval的设定值如下: 值缩写(Sql Server)(Access 和ASP) 说明 Year Yy yyyy 年1753 ~ 9999 Quarter Qq q 季1 ~ 4 Month Mm m 月1 ~ 12

SQLSERVER函数大全

SQL SERVER函数大全 SQL SERVER命令大全 SQLServer和Oracle的常用函数对比 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3.取整(小) S:select floor(-1.001) value O:select floor(-1.001) value from dual 4.取整(截取) S:select cast(-1.002 as int) value O:select trunc(-1.002) value from dual 5.四舍五入 S:select round(1.23456,4) value 1.23460 O:select round(1.23456,4) value from dual 1.2346 6.e为底的幂 S:select Exp(1) value 2.7182818284590451 O:select Exp(1) value from dual 2.71828182 7.取e为底的对数 S:select log(2.7182818284590451) value 1 O:select ln(2.7182818284590451) 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

(完整版)SQLServer存储过程的基本概念以及语法汇总

SQL Server存储过程的基本概念以及语法【转】 存储过程的概念 SQL Server提供了一种方法,它可以将一些固定的操作集中起来由SQL Server 数据库服务器来完成,以实现某个任务,这种方法就是存储过程。 存储过程是SQL语句和可选控制流语句的预编译集合,存储在数据库中,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能。 在SQL Server中存储过程分为两类:即系统提供的存储过程和用户自定义的存储过程。 可以出于任何使用SQL语句的目的来使用存储过程,它具有以下优点: 可以在单个存储过程中执行一系列SQL语句。 可以从自己的存储过程内引用其他存储过程,这可以简化一系列复杂语句。 存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快,而且减少网络通信的负担。 安全性更高。 创建存储过程 在SQL Server中,可以使用三种方法创建存储过程: ①使用创建存储过程向导创建存储过程。 ②利用SQL Server 企业管理器创建存储过程。 ③使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程。

下面介绍使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程 创建存储过程前,应该考虑下列几个事项: ①不能将 CREATE PROCEDURE 语句与其它SQL语句组合到单个批处理中。 ②存储过程可以嵌套使用,嵌套的最大深度不能超过32层。 ③创建存储过程的权限默认属于数据库所有者,该所有者可将此权限授予其他用户。 ④存储过程是数据库对象,其名称必须遵守标识符规则。 ⑤只能在当前数据库中创建存储过程。 ⑥一个存储过程的最大尺寸为128M。 使用CREATE PROCEDURE创建存储过程的语法形式如下: QUOTE: CREATE PROC[EDURE]procedure_name[;number][;number] [{@parameter data_type}[VARYING][=default][OUTPUT]][,...n] WITH {RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}] [FOR REPLICATION] AS sql_statement [ ...n ] 用CREATE PROCEDURE创建存储过程的语法参数的意义如下:

sqlserver函数大全

在SQL Server在线图书或者在线帮助系统中,函数的可选参数用方括号表示。在下列的CONVERT()函数例子中,数据类型的length和style参数是可选的: CONVERT (data-type [(length)], expression[,style]) 可将它简化为如下形式,因为现在不讨论如何使用数据类型: CONVERT(date_type, expression[,style]) 根据上面的定义,CONVERT()函数可接受2个或3个参数。因此,下列两个例子都是正确的: SELECT CONVERT(Varchar(20),GETDATE()) SELECT CONVERT(Varchar(20),GETDATE(), 101) 这个函数的第一个参数是数据类型Varchar(20),第2个参数是另一个函数GETDATE()。GETDATE()函数用datetime数据类型将返回当前的系统日期和时间。第2条语句中的第3个参数决定了日期的样式。这个例子中的101指以mm/dd/yyyy格式返回日期。本章后面将详细介绍GETDATE()函数。即使函数不带参数或者不需要参数,调用这个函数时也需要写上一对括号,例如GETDATE()函数。注意在书中使用函数名引用函数时,一定要包含括号,因为这是一种标准形式。 确定性函数 由于数据库引擎的内部工作机制,SQL Server必须根据所谓的确定性,将函数分成两个不同的组。这不是一种新时代的信仰,只和能否根据其输入参数或执行对函数输出结果进行预测有关。如果函数的输出只与输入参数的值相关,而与其他外部因素无关,这个函数就是确定性函数。如果函数的输出基于环境条件,或者产生随机或者依赖结果的算法,这个函数就是非确定性的。例如,GETDATE()函数是非确定性函数,因为它不会两次返回相同的值。为什么要把看起来简单的事弄得如此复杂呢?主要原因是非确定性函数与全局变量不能在一些数据库编程对象中使用(如用户自定义函数)。部分原因是SQL Server缓存与预编译可执行对象的方式。例如,即席查询可以使用任何函数,不过如果打算构建先进的、可重用的编程对象,理解这种区别很重要。 以下这些函数是确定性的: ●?AVG()(所有的聚合函数都是确定性的) ●?CAST() ●?CONVERT() ●?DATEADD() ●?DATEDIFF() ●?ASCII() ●?CHAR() ●?SUBSTRING() 以下这些函数与变量是非确定性的: ●?GETDATE()

SQLServer OLAP MDX 函数的使用介绍

MDX 函数的使用介绍 根据SqlServer2000 Analysis Services提供的帮助材料展开,略作说明并且根据各个函数的侧重点编写相应的MDX。 数组函数 函数描述 SetToArray将一个或多个集合转换为数组,以用于用户定义函数中。 维度函数 函数描述 Dimension返回包含指定的层次结构、级别或成员的维度。 成员 ?Member?.Dimension 返回包含?Member?的维度。 级别 ?Level?.Dimension 返回包含?Level?的维度。 层次结构 ?Hierarchy?.Dimension 返回包含?Hierarchy?的维度 WITH Member [Measures].[abc] As '[Time]https://www.sodocs.net/doc/4b17208511.html,' SELECT { [Time].&[1997] } ON COLUMNS ,{ [Product].[All Products] } ON ROWS FROM [Sales] WHERE ( [Measures].[abc]) Dimensions返回多维数据集中基于零的位置是由数值表达式指定的维度,或者其名称是由字符串指定的维度。 数字 Dimensions(?Numeric Expression?) 返回这样的维度,该维度在多维数据集中以零为基的位置是由?Numeric Expression?指定的。 说明Measures 维度总由Dimensions(0) 表示。 字符串 Dimensions(?String Expression?) 返回这样的维度,该维度的名称是由?String Expression?指定的 WITH Member [Measures].[abc] As 'Dimensions("[Time]").Name' SELECT { [Time].&[1997] } ON COLUMNS , { [Product].[All Products] } ON ROWS FROM [Sales] WHERE ( [Measures].[abc]) 层次结构函数

SQLServer用户自定义函数详细介绍

SQL Server用户自定义函数 用户自定义函数不能用于执行一系列改变数据库状态的操作,但它可以像系统函数一样在查询或存储过程等的程序段中使用,也可以像存储过程一样通过EXECUTE 命令来执行。在 SQL Server 中根据函数返回值形式的不同将用户自定义函数分为三种类型: (1) 标量函数 标量函数返回一个确定类型的标量值,其返回值类型为除 TEXT 、 NTEXT 、IMAGE 、 CURSOR 、 TIMESTAMP 和 TABLE 类型外的其它数据类型。函数体语句定义 在 BEGIN-END 语句内。在 RETURNS 子句中定义返回值的数据类型,并且函数的最后一条语句必须为 Return 语句。创建标量函数的格式: Create Function 函数名(参数) Returns 返回值数据类型 [With {Encryption|Schemabinding}] [AS] BEGIN SQL 语句 ( 必须有 Return 子句 ) END 举例: ******************************************************************* CREATE FUNCTION dbo.Max ( @a int, @b int ) RETURNS int AS BEGIN DECLARE @max int IF @a>@b SET @max=@a ELSE SET @max=@b Return @max END *******************************************************************调用标量函数可以在 T-SQL 语句中允许使用标量表达式的任何位置调用返 回标量值(与标量表达式的数据类型相同)的任何函数。必须使用至少由两部分组成名称的函数来调用标量值函数,即架构名 . 对象名,如 dbo.Max(12,34) 。 (2) 内联表值函数 内联表值型函数以表的形式返回一个返回值,即它返回的是一个表。内联表 值型函数没有由 BEGIN-END 语句括起来的函数体。其返回的表是由一个位于RETURN 子句中的 SELECT 命令从数据库中筛选出来。内联表值型函数功能相当 于一个参数化的视图。

SQLServer和MySql语法和关键字的区别详解

SQL Server 和MySql 语法和关键字的区别 ——用于SQLServer到MySql的转换 对于程序开发人员而言,目前使用最流行的两种后台数据库即为MySQL and SQL Server。这两者最基本的相似之处在于数据存储和属于查询系统。你可以使用SQL来访问这两种数据库的数据,因为它们都支持ANSI-SQL。还有,这两种数据库系统都支持二进制关键词和关键索引,这就大大地加快了查询速度。同时,二者也都提供支持XML的各种格式。除了在显而易见的软件价格上的区别之外,这两个产品还有什么明显的区别吗?在这二者之间你是如何选择的?让我们看看这两个产品的主要的不同之处,包括发行费用,性能以及它们的安全性。 ◆根本的区别是它们遵循的基本原则 二者所遵循的基本原则是它们的主要区别:开放vs保守。SQL服务器的狭隘的,保守的存储引擎与MySQL服务器的可扩展,开放的存储引擎绝然不同。虽然你可以使用SQL服务器的Sybase引擎,但MySQL能够提供更多种的选择,如MyISAM, Heap, InnoDB, and Berkeley DB。MySQL不完全支持陌生的关键词,所以它比SQL服务器要少一些相关的数据库。同时,MySQL也缺乏一些存储程序的功能,比如MyISAM引擎联支持交换功能。 ◆发行费用:MySQL不全是免费,但很便宜 当提及发行的费用,这两个产品采用两种绝然不同的决策。对于SQL服务器,获取一个免费的开发费用最常的方式是购买微软的Office或者Visual Studio的费用。但是,如果你想用于商业产品的开发,你必须还要购买SQL Server Standard Edition。学校或非赢利的企业可以不考虑这一附加的费用。 ◆性能:先进的MySQL 纯粹就性能而言,MySQL是相当出色的,因为它包含一个缺省桌面格式 MyISAM。MyISAM 数据库与磁盘非常地兼容而不占用过多的CPU和内存。 MySQL可以运行于Windows系统而不会发生冲突,在UNIX或类似UNIX 系统上运行则更好。你还可以通过使用64位处理器来获取额外的一些性能。 因为MySQL在内部里很多时候都使用64位的整数处理。Yahoo!商业网站就使用MySQL 作为后台数据库。 当提及软件的性能,SQL服务器的稳定性要比它的竞争对手强很多。但是,这些特性也要付出代价的。比如,必须增加额外复杂操作,磁盘存储,内存损耗等等。如果你的硬件和软件不能充分支持SQL服务器,我建议你最好选择其他如DBMS数据库,因为这样你会得到更好的结果。 ◆安全功能

SQLServer时间日期函数详解

SQLServer时间日期函数详解,SQLServer,时间日期, 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的datetime 值 例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:0 0.000 3. datediff 返回跨两个指定日期的日期和时间边界数。 select datediff(day,'2004-09-01','2004-09-18') --返回:17 select datediff(day,'2004-09-18','2004-09-01') --返回:-17 4. datepart 返回代表指定日期的指定日期部分的整数。 SELECT DATEPART(month, '2004-10-15') --返回10 5. datename 返回代表指定日期的指定日期部分的字符串 SELECT datename(weekday, '2004-10-15') --返回:星期五 6. day(), month(),year() --可以与datepart对照一下 select 当前日期=convert(varchar(10),getdate(),120) ,当前时间=convert(varchar(8),getdate(),114) select datename(dw,'2004-10-15') select 本年第多少周=datename(week,'2004-10-15') ,今天是周几=datename(weekday,'2004-10-15') 函数参数/功能 GetDate( ) 返回系统目前的日期与时间 DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1 DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期 DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称 参数interval的设定值如下: 值缩写(Sql Server)(Access 和ASP) 说明 Year Yy yyyy 年1753 ~ 9999 Quarter Qq q 季1 ~ 4 Month Mm m 月1 ~ 12 Day of year Dy y 一年的日数,一年中的第几日1-366

SQLServer2005函数大全

SQL Server 2005 函数大全 字符串函数 (2) 日期和时间函数 (3) 日期部分 (5) 数学函数 (6) 数据类型转换函数 (7) 日期类型数据转换为字符数据类型的日期格式的部分样式表 (8) 系统函数 (11) 排名函数 (11) 聚合函数 (12)

字符串函数 表达式:是常量、变量、列或函数等与运算符的任意组合。以下参数中表达式类型是指表达式经运算后返回的值的类型 函数名称参数示例说明 ascii (字符串表达式) select ascii('abc') 返回 97返回字符串中最左侧的字符的ASCII码。 char(整数表达式) select char(100) 返回 d 把ASCII 码转换为字符。 介于0 和255 之间的整数。如果该整数表达式不在此范围内,将返回NULL 值。 charindex (字符串表达式1,字符串表达式 2[,整数表达式]) select charindex('ab','BCabTabD')返回3 select charindex('ab','BCabTabD',4)返回6 在字符串2中查找字符串1,如果存在返回第一个匹配的 位置,如果不存在返回0。如果字符串1和字符串2中有一个 是null则返回null。 可以指定在字符串2中查找的起始位置。 difference (字符串表达式1,字符串表达式2) select difference('Green','Greene')返回4 返回一个0到4的整数值,指示两个字符表达式的之间的相似程度。0 表示几乎不同或完全不同,4表示几乎相同或完全相同。注意相似并不代表相等 left (字符串表达式,整数表达式) select left('abcdefg',2) 返回 ab返回字符串中从左边开始指定个数的字符。 right (字符串表达式,整数表达式) select right('abcdefg',2) 返回fg返回字符串中从右边开始指定个数的字符。 len(字符串表达式) select len('abcdefg')返回 7 select len('abcdefg ') 返回7 返回指定字符串表达式的字符数,其中不包含尾随空格。lower (字符串表达式) select lower('ABCDEF')返回 abcdef返回大写字符数据转换为小写的字符表达式。 upper (字符串表达式) select upper('abcdef')返回 ABCDEF返回小写字符数据转换为大写的字符表达式。 ltrim (字符串表达式) select ltrim(' abc')返回 abc返回删除了前导空格之后的字符表达式。 rtrim(字符串表达式) select rtrim('abc ')返回 abc返回删除了尾随空格之后的字符表达式。 patindex (字符串表达式1,字符串表达式2) select patindex('%ab%','123ab456')返回4 select patindex('ab%','123ab456')返回0 select patindex('___ab%','123ab456')返回1 select patindex('___ab_','123ab456')返回0 在字符串表达式1中可以使用通配符,此字符串的第一个 字符和最后一个字符通常是%。 %表示任意多个字符,_表示任意字符 返回字符串表达式2中字符串表达式1所指定模式第一次出现 的起始位置。没有找到返回0 reverse (字符串表达式) select reverse('abcde')返回 edcba返回指定字符串反转后的新字符串space (整数表达式) select'a'+space(2)+'b' 返回 a b返回由指定数目的空格组成的字符串。

相关主题