SQL——系统函数

1) CASE

CASE有两种使用形式:一种是简单的CASE函数,另一种是搜索型的CASE函数。

[1]简单的 CASE 函数

Format:

CASE input_expression

WHEN when_expression THEN result_expression

[ ...n ]

[ ELSE else_result_expression  ]

END

Attention: 参数input_expression和when_expression的数据类型必须相同,或者可隐形转换。

eg1:

[2]CASE 搜索函数:

Function: 按指定的顺序为每个WHEN子句的Boolean_expression表达式求值,返回第一个取值为TRUE的Boolean_expression表达式所对应的result_expression表达式之值;如果没有取值为TRUE Boolean_expression表达式,则当指定else子句时,返回else_result_expression之值,若没有指定else子句时,则返回null.

Format:

CASE

WHEN Boolean_expression THEN result_expression

[ ...n ]

[ ELSE else_result_expression]

END

eg1:

2) CAST 和 CONVERT

常用的类型转换有以下几种情况:

日期型->字符型:如将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。

字符型->日期型:如将字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)转换为datetime 或 smalldatetime 数据。

数值型->字符型:如将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。

Format:

CAST ( expression AS data_type )

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

Attention: data_type不能为用户定义的数据类型。Style的常用取值及其作用如下表所示:

日期型与字符型转换时style的常用取值及其作用


Style取值

不带世纪数位


Style取值

带世纪数位


标准


输入/输出


0 或   100


默认值


mon dd yyyy hh:miAM

(或 PM)


1


101


美国


mm/dd/yyyy


2


102


ANSI


yy.mm.dd


9 或   109


默认值   +   毫秒


mon dd yyyy hh:mi:ss:mmmAM(或 PM)


10


110


美国


mm-dd-yy


12


112


ISO


yymmdd

eg:

float 或 real转换为字符数据时style的取值


style值


输出


0(默认值)


根据需要使用科学记数法,长度最多为   6。


1


使用科学记数法,长度为8。


2


使用科学记数法,长度为16。

eg:

从 money 或 smallmoney转换为字符数据时style的取值



输出


0(默认值)


小数点左侧每三位数字之间不以逗号分隔,小数点右侧取两位数,例如   4236.98。


1


小数点左侧每三位数字之间以逗号分隔,小数点右侧取两位数,例如   3,610.92。


2


小数点左侧每三位数字之间不以逗号分隔,小数点右侧取四位数,例如   4236.9819。

eg:

eg:如下程序将检索总学分40~49分的学生姓名,并将总学分转换为 char(20)。

如下例子分别使用 CAST 和 CONVERT

3) COALESCE

Function:返回参数表达式中第一个非空表达式的值,如果所有自变量均为null,则COALESCE 返回null。

Format:COALESCE ( expression[ ...n ] )

eg1:

eg2:

6) 日期时间函数

日期函数可用在 SELECT 语句的选择列表或用在查询的 WHERE 子句中,在此介绍一下GETDATE ( )函数。

Function:返回当前的日期和时间。返回值类型:datetime

Format:GETDATE ( )

eg:

7)游标函数

游标函数用于返回有关游标的信息。主要有如下游标函数:

Function:返回最后打开的游标中当前存在的满足条件的行数。返回值类型为:integer

Format:@@CURSOR_ROWS

eg:

如下的示例声明了一个游标,并用 SELECT 显示 @@CURSOR_ROWS 的值。

[2]CURSOR_STATUS

Function:返回游标状态值,是打开还是关闭

Format:

CURSOR_STATUS

(  { ‘local‘ , ‘cursor_name‘ }    /*指明数据源为本地游标*/

| { ‘global‘ , ‘cursor_name‘ }          /*指明数据源为全局游标*/

| { ‘variable‘ , ‘cursor_variable‘ }          /*指明数据源为游标变量*/

)

CURSOR_STATUS()函数返回值如下表所示:


返回值


游标名或游标变量


1


游标的结果集至少有一行。


0


游标的结果集为空。*


-1


游标被关闭。


-2


游标不可用。


-3


指定的游标不存在。

eg:

 1 SELECT @@CURSOR_ROWS as a
 2 DECLARE student_cursor CURSOR FOR
 3            SELECT Sname FROM XS
 4     OPEN student_cursor
 5     FETCH NEXT FROM student_cursor
 6     SELECT @@CURSOR_ROWS as b
 7     select CURSOR_STATUS(‘global‘,‘student_cursor‘) as c
 8     CLOSE student_cursor
 9     DEALLOCATE student_cursor
10 go

Result:

[3]@@FETCH_STATUS

Format:@@FETCH_STATUS

Function:返回 FETCH 语句执行后游标的状态。返回值类型:integer,@@FETCH_STATUS返回值如下表所示。


返回值


说明


0


FETCH   语句执行成功。


-1


FETCH 语句执行失败。


-2


被读取的记录不存在。

eg:

 1  1 /*用 @@FETCH_STATUS 控制在一个 WHILE 循环中的游标活动。*/
 2  2 use XSCJ
 3  3 declare @name char(10),@st_id char(6)
 4  4 declare student_cursor CURSOR
 5  5     for    select Sname,Sno from XSCJ.dbo.XS
 6  6     open student_cursor
 7  7     FETCH NEXT FROM student_cursor into @name,@st_id
 8  8     select @name,@st_id
 9  9     while @@FETCH_STATUS = 0
10 10     begin
11 11         fetch next from student_cursor into @name,@st_id
12 12         select @name,@st_id
13 13     end
14 14 close student_cursor
15 15 deallocate student_cursor

Result:

             

[4]元数据函数

元数据是用于描述数据库和数据库对象的。元数据函数用于返回有关数据库和数据库对象的信息。

1) DB_ID

Format:DB_ID ( [ ‘database_name‘ ] )

Function:系统创建数据库时,自动为其创建一个标识号,函数DB_ID根据database_name指定的数据库名,返回其数据库标识号(ID),如果参数database_name不指定,则返回当前数据库ID,返回值类型为smallint.

2) DB_NAME函数

Format:DB_NAME(database_id)

Function:返回其数据库名字(name)。

时间: 2024-10-11 06:45:00

SQL——系统函数的相关文章

SQL系统函数的使用(实验五)

SQL系统函数的使用(试验5) 函数在查询语句中的使用 查询员工的姓名和日工资(保留1位小数): 查询并显示部门号为01和02的所有员工的姓名首字及岗位: 查询并显示所有员工的姓名及工龄: 查询1990年6月5号以前入职的员工姓名和岗位: 查询1990年入职的员工姓名和入职日期 (使用EXTRACT.TO_DATE分别实现): 查询6月份入职的员工姓名和入职日期: 1.查询员工的姓名和日工资(保留1位小数): select ename,round(sal/30,1) from emp; 2.查询

SQL系统函数

1.with...as... 说明:把一大堆重复用到的SQL语句放在with as里面,取一个别名,后面查询就可以直接用它,这样对于大批量的SQL数据起到一个优化的作用,而且清楚明了. eg: with a as (select * from test) select * from a 2.case when then 说明:case具有两种格式,简单case函数和case搜索函数 a.简单case函数 eg: case sex when '1' then '男' when '2' then '

MS SQL系统函数之DATEDIFF

DATEDIFF是常用的计算日期差函数,使用语法如下: DATEDIFF ( datepart , startdate , enddate ) 其中参数datepart有如下选项(只列出常用的参数): datepart 缩写 解释 year yy,yyyy 年 month mm,m 月 day dd,d 天 week wk,w 周 hour hh 小时 minute mi,n 分钟 second ss,s 秒 millisecond ms 毫秒 下面举例说明: 计算两个日期之间有多少年 SELE

sql 系统函数取表基本信息

SELECT 表名=case when a.colorder=1 then d.name else '' end, 序号=a.colorder, 列名=a.name, 数据类型=b.name, 长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'), 小数位=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0), 标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 t

sql 系统函数

--查看表备注SELECT a.column_id AS No, a.name AS 列名, isnull(g.[value],'-') AS 说明 FROM sys.columns a left join sys.extended_properties g on (a.object_id = g.major_id AND g.minor_id = a.column_id) WHERE object_id = (SELECT object_id FROM sys.tables WHERE nam

SQL sever 部分常量函数及系统函数使用

(1)数学函数的使用 1.求绝对值 ABS()函数 SELECT ABS('2') 2.求平方根  SQRT()函数 SELECT SQRT('256') 3.求平方  SQUARE()函数 SELECT SQUARE('6') (2)字符串函数 1.返回字符串的第一个字符的ASCII码值函数 ASCII() SELECT ASCII('Abcd') 2.字符串转化大.小写函数 LOWER()把字符串转化小写 UPPER()把字符串转化大写 SELECT LOWER('MACHINE') SEL

Sql Server函数全解<五>之系统函数

原文:Sql Server函数全解<五>之系统函数  系统信息包括当前使用的数据库名称,主机名,系统错误消息以及用户名称等内容.使用SQL SERVER中的系统函数可以在需要的时候获取这些信息.下面介绍系统函数的作用和使用方法. 1.返回表中指定字段的长度   COL_LENGTH(table,column)函数返回表中指定字段的长度值.其返回值为int类型,table为要确定其列长度信息的表的名称,是nvarchar类型的表达式.column为要确定其长度的列的名称,是nvarchar类型的

SQL Server 系统函数

一组内置函数,对 SQL Server 中的值.对象和设置执行操作,并返回有关它们的信息. 系统函数 功能 APP_NAME() 返回当前会话的应用程序名称(如果应用程序进行了设置) CASE表达式 计算条件列表,并返回表达式的多个可能结果之一 CAST(expression AS data_type ) 将表达式显示转换为另一种数据类型 CONVERT(data_type[(length)],expression[,style]) 将表达式显示转换为另一种数据类型.CAST和CONVERT提供

LINQ to SQL 调用 SQL Server 的系统函数

?  简介 在 C# 中比较常用的 ORM(Object Relational Mapping)框架就是 EF 了,EF 经常结合 LINQ to SQL 来操作数据库.本文主要讨论如何在 LINQ to SQL 语法中调用 SQL Server 的内置函数,或者系统函数.主要使用以下静态类实现: 1.   DbFunctions 类 1)   位于 EntityFramework.dll(EF6.0) 程序集的 System.Data.Entity 命名空间中,适用于EF6.0 的版本. 2)