SQL server 基本函数(一)
1. isnull()函数
作用:使用指定的替换值替换 NULL
语法:isnull(check_expression,replacement_value)
参数:check_expression可以是任何类型的。
rereplacement_value在 check_expression为 NULL时将返回的表达式。replacement_value必须与 check_expression具有相同的类型。
返回类型
返回与 check_expression 相同的类型。
注释
如果 check_expression 不为 NULL,那么返回该表达式的值;否则返回 replacement_value。
例:将 table表中的所有书的书名、类型及价格显示出来。如果一个书名的价格是 NULL,那么在结果集中显示的价格为 0.00。
select bookname,type,isnull(price,0.00) as Price
from table
2. Datediff()函数
作用:返回两个日期之间的天数。
语法:Datediff(datepart,startdate,enddate)
参数:datepart 表示相隔时间的类型 (如:yy,mm,dd,week,hh……)
startdate,enddate 为合法的日期表达式
返回值:返回值与datepart相对应。
例: (1)返回当天的记录
select * from table where datediff(dd,datetime,getdate())=0 // datetime 为表结构中的列名,类型为时间类型。
(2) 返回一个周的记录
select * from table where datediff(week,datetime,getdate())=0
3. convert()函数
将某种数据类型的表达式显式转换为另一种数据类型。
语法:convert(type, expression) || convert(type, expression,format)
参数 : type 表达式将转换成的数据类型。
expression 要转换的表达式。
format对于将字符串转换为日期或时间数据类型以及相反的转换过程,format是描述要使用的日期格式字符串的样式代码。
返回类型:
返回和type相同的类型。
例:(1)select * from table where id=Convert(varchar(2),substring("abcdefgh",1,2))
(2) select convert(varchar(10),datetime,21) from table // datetime 为表结构中的列名,类型为时间类型。21为yy-mm-dd格式所对应的值
4. substring()函数
返回字符、二进制、文本或图像表达式的一部分
语法:Substring ( expression, start, length )
参数:
expression 字符串、二进制字符串、文本。
start 指定子字符串的开始位置。
- length 指定子字符串的长度,如果为空,则直到串的尾部。
返回类型: 与expression类型相同。
例:返回table表中name属性列中所有字符串的首字母
select substring(name,1,1) as 首字母 from table
5. set ANSI_NULLS ON 和 set QUOTED_IDENTIFIER ON
当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须符合所有 Transact-SQL 标识符规则。 SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。
当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。
当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。