SQLServer基本函数

本文详细介绍了SQLServer中的各种实用函数,包括字符串函数、数学函数、日期时间函数以及系统函数等。此外还深入探讨了SQL合计函数,如Avg、Count、First、Last等,并解释了它们的具体应用。

SQLServer基本函数

1.字符串函数 :



字符操作类 :


upper(char_expr) 转为大写
lower(char_expr) 转为小写
UCase(string) 返回 Variant (String),其中包含转成大写的字符串。
LCase(string) 返回字符串的小写形式。
space(int_expr) 生成int_expr个空格
replicate(char_expr,int_expr) 复制字符串int_expr次
reverse(char_expr) 反转字符串
stuff(char_expr1,start,length,char_expr2) 将字符串char_expr1中的从 start开始的length个字符用char_expr2代替
ltrim(char_expr) rtrim(char_expr) 去掉空格
ascii(char) char(ascii) 两函数对应,取ascii码,根据ascii吗取字符


字符串查找 :


charindex(char_expr,expression) 返回char_expr的起始位置
patindex("%pattern%",expression) 返回指定模式的起始位置,否则为0
locate(substr,str,pos) 返回子串substr在字符串str第一个出现的位置


2.数学函数


abs(numeric_expr) 求绝对值
ceiling(numeric_expr) 取大于等于指定值的最小整数
exp(float_expr) 取指数
floor(numeric_expr) 小于等于指定值得最大整数
power(numeric_expr,power) 返回power次方
rand([int_expr]) 随机数产生器
round(numeric_expr,int_expr) 安int_expr规定的精度四舍五入
sign(int_expr) 根据正数,0,负数,,返回+1,0,-1
sqrt(float_expr) 平方根
exp(float x):求e的x次幂
tan(float x):计算x(弧度表示)的正切值。
atan(float x):求x(弧度表示)的反正切值
cos(float x):求x(弧度表示)的余弦值
acos(float x):求x(弧度表示)的反余弦值
sin(float x):计算x(弧度表示)的正弦值。
asin(float x):求x(弧度表示)的反正弦值
fabs(float x):求浮点数x的绝对值
fmod(float x, float y):计算x/y的余数
pow(float x, float y):计算x的y次幂。
sqrt(float x):计算x的平方根。


3.日期,时间函数


getdate() 返回日期
datename(datepart,date_expr) 返回名称
datepart(datepart,date_expr) 取日期一部份
datediff(datepart,date_expr1.dateexpr2) 日期差
dateadd(datepart,number,date_expr) 返回日期加上 number


4.系统函数


suser_name() 用户登录名
user_name() 用户在数据库中的名字
user 用户在数据库中的名字
show_role() 对当前用户起作用的规则
db_name() 数据库名
object_name(obj_id) 数据库对象名
col_name(obj_id,col_id) 列名
col_length(objname,colname) 列长度
valid_name(char_expr) 是否是有效标识符


5.SQL 合计函数:


Avg 函数:
计算包含在特定查询字段中的一组数值的算术平均值。


   语法:Avg(expr)expr 代表一个字符串表达式,它或者标识一个字段,该字段包含要计算平均值的数据;或者标识一个表达式,它用该字段中的数据来执行计算。


   说明:使用 Avg 计算的平均值是算术平均值(将全部值的总和除以值的数目)。Avg 函数在计算中不计任何 Null 字段。你可以把 Min 和 Max 用于询问表达式和具备 SQL 特性的 QueryDef 对象中或在创建基于 SQL 查询的 Recordset 对象时。

Count 函数: 计算从查询返回的记录数。

  语法:Count(expr)expr 代表一个字符串表达式,它或者标识一个字段,该字段包含要计算的数据;或者是一个表达式,它使用此字段中的数据来执行计算。expr 中的运算对象可能包括一个表字段名,一个常数或一个函数(可能是内在的,也可能是用户自定义的,但不是 SQL合计函数).您可以计算任何种类的数据,包含文本数据。

  说明:可以使用 Count 计算下一级查询的记录数。但 Count 只是简单计算记录的数量。并不管记录中保存的是什么值。Count 函数不数带有 Null 字段的记录。如果 expr 标识多重字段,在至少有一个字段的值不为 Null 的情况下, Count 函数只计算一个记录。如果全部的指定字段为 Null,没有记录会被计算。使用 (&) 分隔字段名。在查询表达式中可以使用 Count。你可以把这些表达式应用于具备 SQL特性的 QueryDef对象中或在创建基于SQL查询的Recordset时。

First 和 Last 函数: 在查询所返回的结果集中,第一个记录或最后一个记录 所返回的字段值。

 语法:First(expr);Last(expr)expr 代表一个字符串表达式,它或者标识一个字段,该字段包含要计算的数据;或者是一个表达式,它使用此字段中的数据来执行计算。expr 中的运算对象可能包括一个表字段名,一个常数或一个函数(可能是内在的,也可能是用户自定义的,但不是 SQL 合计函数)。

  说明:First和 Last 函数与 MoveFirst和 MoveLast法在 DAO 记录集合对象中是相近的。它们只简单返回查询结果集中的第一个或最后一个记录的指定字段值。因为通常返回的记录没有一定的顺序 (除非查询中包含一个 ORDER BY 子句),所以这些函数返回的记录会任意地排列。

Min 和 Max 函数 : 在查询时从一组指定字段的值中返回最小或最大值。

   语法:Min(expr);Max(expr) expr 代表一个字符串表达式,它或者标识一个字段,该字段包含要计算的数据;或者是一个表达式,它使用此字段中的数据来执行计算。 expr中的运算对象可能包括一个表字段名,一个常数或一个 函数 (可能是内在的,也可能是用户自定义的,但不是 SQL 合计函数)。

   说明:可以使用 Min 及 Max 来计算字段中的最小及最大值,该字段是基于指定的合计或分组的。例如,可以使用这些函数返回最低和最高的货运成本。如果没有指定合计,则使用整个表。你可 以把 Avg 用于查询表达式和具备 SQL特性的 QueryDef对象中或当创建基于SQL查询的 Recordset对象时。

StDev 和 StDevP 函数 : 返回总体或总体样本的标准偏差的估计值,此估计 值用包含在一个查询的指定字段中的一组值来表示。

  语法:StDev(expr);StDevP(expr) expr 代表一个字符串表达式,它或者标识一个字段,该字段包含要计算的数据;或者是一个表达式,它使用此字段中的数据来执行计算。expr 中的运算对象可能包括一个表字段名,一个常数或一个函数(可能是内在的,也可能是用户自定义的,但不是 SQL 合计函数)。

  说明:StDevP 函数计算总体,而 StDev 函数则计算总体样本。如果下一级查询中包含两个以下的记录(或没有记录,对于StDevP 函数),这两个函数将返回一个 Null 值(表示不能计算标准偏差)。可以在查询表达式中使用 StDev 和 StDevP 函数。你可以把这些表达式应用于具备 SQL 特性的 QueryDef 对象中或在创建基于 SQL 查询的Recordset 时。

Sum 函数: 返回包含在指定查询字段中一组值的总计。

   语法:Sum(expr) expr 代表一个字符串表达式,它或者标识一个字段,该字段包含要计算的数据;或者是一个表达式,它使用此字段中的数据来执行计算。 expr中的运算对象可能包括一个表字段名,一个常数或一个函数(可能是内在的,也可能是用户自定义的,但不是 SQL 合计函数)。

  说明:Sum 函数求字段中值的总和。例如,可用 Sum 函数计算货运的总费用。Sum 函数会忽略包含 Null 字段的记录。下列示例显示如何计算产品的 UnitPrice (单价)及 Quantity (数量)字段的合计:
SELECT
Sum(UnitPrice * Quantity)
AS [Total Revenue] FROM [Order Details];
可以在一个查询表达式之中 使用 Sum 函数。你也可以在具备 SQL 特性的 QueryDef 对象中或在创建基于SQL查询的 Recordset 对象时使用这一表达式。

Var 和 VarP 函数: 返回一个总体或总体样本的方差的估计值,此估计值用包含 在指定查询字段中的一组值来表示。

 语法:Var(expr);VarP(expr) expr 代表一个字符串表达式,它或者标识一个字段,该字段包含要计算的数据;或者是一个表达式,它使用此字段中的数据来执行计算。expr 中的运算对象可能包括一个表字段名,一个常数或一个函数(可能是内在的,也可能是用户自定义的,但不是 SQL 合计函数)。

   说明:使用 VarP 函数计算总体,而 Var 函数计算总体样本。如果下一级查询中包含两个以下的记录,Var 及 VarP 函数将返回一个 Null 值,该表示不能计算方差。在查询表达式或 SQL 语句中,可以使用 Var 及 VarP 函数。

  datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格
length(expression,variable) 指定字符串或变量名称的长度。
substring(expression,start,length) 不多说了,取子串
right(char_expr,int_expr) 返回字符串右边int_expr个字符
concat(str1,str2,...)返回来自于参数连结的字符串。


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

这条语句不对的原因是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 (<float_expression>[,length[, <decimal>]])
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>)
返回character_expression 左起 integer_expression 个字符。

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

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

四、字符串比较函数
1、CHARINDEX()
返回字符串中某个指定的子串出现的开始位置。
CHARINDEX (<’substring_expression’>, <expression>)
其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。
此函数 不能用于TEXT 和IMAGE 数据类型。
2、PATINDEX()
返回字符串中某个指定的子串出现的开始位置。
PATINDEX (<’%substring _expression%’>, <column_ name>)其中子串表达式前后必须有百分号“%”否则返回值为0。
与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于CHAR、 VARCHAR 和TEXT 数据类型。

五、字符串操作函数
1、QUOTENAME()
返回被特定字符括起来的字符串。
QUOTENAME (<’character_expression’>[, quote_ character]) 其中quote_ character 标明括字符串所用的字符,缺省值为“[]”。
2、REPLICATE()
返回一个重复character_expression 指定次数的字符串。
REPLICATE (character_expression integer_expression) 如果integer_expression 值为负值,则返回NULL 。

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

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

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

5、STUFF()
用另一子串替换字符串指定位置、长度的子串。
STUFF (<character_expression1>, <start_ position>, <length>,<character_expression2>)
如果起始位置为负或长度值为负,或者起始位置大于 character_expression1 的长度,则返回NULL 值。
如果length 长度大于character_expression1 中 start_ position 以右的长度,则character_expression1 只保留首字符。
六、数据类型转换函数
1、CAST()
CAST (<expression> AS <data_ type>[ length ])

2、CONVERT()
CONVERT (<data_ type>[ length ], <expression> [, 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 (<datepart>, <number>, <date>)
返回指定日期date 加上指定的额外日期间隔number 产生的新日期。
5、DATEDIFF()
DATEDIFF (<datepart>, <date1>, <date2>)
返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其结果值是一个带有正负号的整数值。

6、DATENAME()
DATENAME (<datepart>, <date>)
以字符串的形式返 回日期的指定部分此部分。由datepart 来指定。

7、DATEPART()
DATEPART (<datepart>, <date>)
以整数值的形式返 回日期的指定部分。此部分由datepart 来指定。
DATEPART (dd, date) 等同于DAY (date)
DATEPART (mm, date) 等同于MONTH (date)
DATEPART (yy, date) 等同于YEAR (date)

8、GETDATE()
以DATETIME 的缺省格式返回系统当前的日期和时间。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值