标量函数

本文详细介绍了 SQL Server 中常用的函数,包括服务器环境信息查询、日期时间处理、字符串操作及数据类型转换等。通过实例展示了如何使用这些函数进行高效的数据处理。

标量函数
 性能设计在查询设计中所占的比重有多大,它在数据库模式设计中所占的比重就有多大,
设计时应当按照where 条件中查找数据的方式,而不是查询时使用函数操作数据的方式,来规划
数据存储,虽然在结果列中的表达式里使用函数可能是不可避免的,但在where条件中使用函数
将会强制对每一行记录都用函数进行计算。


1。服务器环境信息:

     GetDate()  以3个毫秒的精度返回当前的服务器日期和时间
      Db_name() 返回当前数据库的名字
例:
    select getdate() as 'date', DB_name() as 'datebase'
返回:
 date   datebase
------------------------------------------------------------------------
2008-10-14 22:10:39.857  F21 

例:
select user_name() as 'user',   --返回当前用户的数据库的用户名
 suser_sname() as 'login',   --返回用户使用的登录名,如果用户是作为windows方式登录将返回windows用户名
 host_name() as 'workstation',  --返回用户工作组的名称
 app_name() as 'application'  --返回当前连接到SQL的应用程序名称

返回:
   user        login           workstation    application
---------------------------------------------------------------------------------------
   dbo    YY/Administrator  YY           SQL 查询分析器


2。日期时间函数

 
日  期  部  分           缩  写    
year                      yy,yyyy    
quarter                  qq,q    
month                    mm,m    
dayofyear              dy,y    
day                        dd,d    
week                      wk,ww    
weekday                 dw    
hour                        hh    
minute                     mi,n    
second                    ss,s    
millisecond               ms  

DateName:返回datetime值中指定日期部份的字符串值
例:select datename(year,getdate()) as year,
      datename(month,getdate()) as month,
      datename(day,getdate()) as day
返回:
year     month    day
---------------------------------
2008 10 14

Date Part:返回datetime值的指定日期部份的整数值

select datepart(dayofyear,getdate()) as '第几天',  ---返回一年中的第几天
 datepart(dw,getdate()) as '周几'   ---返回星期几

返回:
第几天     周几
------------------------
288   3

对日期时间数据进行加、减运算使用 dateAdd()   dateDiff()
例:
select   datediff(yy,'1984/5/20',getdate()) as years, --返回1984/5/20距今天多少年
 datediff(dd,'1984/5/20',getdate()) as days --返回1984/5/20距今天多少天
返回:
years        days
----------------------
24            8913 

以下例句查出当前时间100小时后的时间
例:         select dateadd(hh,100,getdate()) as '100小时后'

返回:
 100小时后
-------------------------------------------
   2008-10-19 03:10:05.170

3.字符串函数

SubString()返回字符串中指定的部分
例: select  substring('abcdefg',3,2)  ---3 代表从第3个字符开始返回,2代表返回的长度为2位
返回:     cd   

Stuff()函数将一个字符串插入另一个字符串,在插入新字符串时将原来的字符串中删除指定长度的字符
例: 
select stuff('123456789',4,0,'-') as 'A',  --4代表从第4个字符开始插入,0代表删除位数为0, - 代表插入的内容
         stuff('123456789',4,1,'-') as 'B'    --4代表从第4个字符开始插入,1代表删除位数为0, - 代表插入的内容
返回:
      A        B
----------------------------------------
123-456789 123-56789 

Patindex()查找指定字符第一次出现的位置
例:   select patindex('%[cd]%','abcdefg')  --查找[cd]第一次出现的位置
返回:    3

例:
select left('abcdefg',2) as '左',    --left()返回指定字符串从左边开始的2位字符
         right('abcdefg',3) as '右'   --right()返回指定字符串从右边开始的3位字符

返回:
     左      右
----------------------
     ab    efg 

例:
select  len('ABCDEFGHIJK')    as '长度'  --len()返回指定字符串的长度
返回:        11

Rtrim()删除尾随的空格,Ltrim()删除起始的空格
例:    
      select   Rtrim('   middle earth  ')  as '结尾',
                  Ltrim('   middle earth  ')  as '开始'
返回:
         结尾             开始
---------------------------------------------
    middle earth middle earth 

将字符串转为大写或者小写
    小写字母是在9世纪为了方便书写而首交提出来的,随着15世纪印刷机的
发明,出现了'Upper()'和'Ltrim()'这样两个术语

例:     select upper('one TWO tHrEe') as '大写',
                    lower('one TWO tHrEe') as '小写'
返回:
       大写                          小写
---------------------------------------------------
ONE TWO  THREE       one two  three 

4.类型转换
进行数据类型转换需要使用函数  cast()  和  convert()
例:     select cast('Away' as nvarchar(5)) as '转换'
返回:            Away

例:  
        select getdate() as '当前时间',
       convert(nvarchar(25),getdate(),100) as '类型100',  --100指返回时间的一种格式
       convert(nvarchar(25),getdate(),1) as '类型1',  --1指返回时间的一种格式
        convert(nvarchar(25),getdate(),121) as 'ODBC型'  --121指返回ODBC时间的格式

返回:
     当前时间                                   类型100                    类型1                       ODBC型
--------------------------------------------------------------------------------------------------------------------------
2008-10-21 21:48:44.547         10 21 2008  9:48PM   10/21/08   2008-10-21 21:48:44.547 

 
  样   式           描   述              格   式   
0/100*          默认                  mon dd yyy hh:mi AM   
1/101            美国                  mm/dd/yy   
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:mmm AM   
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(24h)   
21/121*        ODBC规范(带毫秒) yyyy-mm-dd hh:mm:ss.mmm(24h)   
     
     
   

Str()函数将数据在字符与数字类型之间转换
例:
 
第一位参数为指定要转换的字符
第二位参数为指定要转换的长度
第三位参数为小数位数(包含小数点)

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值