使用标量函数
通过对象资源管理器是了解所有SQL SERVER函数的最佳方法,
常见的标量函数(只对单个值操作返回单个值的函数)
一、用户信息函数
user_name():返回当前用户的数据库用户名
suser_sname():返回用户向SQLSERVER验证时使用的登录名
host_name():用户工作站的名称
APP_name():返回当前连接到SQL SERVER的应用程序名
二、日期-时间函数
两个返回当前日期和时间的函数
getdate():返回服务器的当前日期和时间,精确到3ms
getUTCdate():返回服务器的当前日期和时间对应的格林威治时间
下面4个Sql Server日期-时间函数抽取和处理存储在datetime列中的日期和时间
的特定部分。
1、DateName(DatePortion,date)
返回date中DatePortion指定的日期部分的值
如:print DateName(yy,getdate())
返回年份。
2、DatePart(Dateportion,date)
返回date中DatePortion指定的日期部分的值
如:print DatePart(dd,getdate())
返回日(月中的第几日)。
3、DateAdd(Dateportion,amount,Beginning Date)
对Beginning Date中指定的日期部分进行加Amount运算。
并返回进行运算后的整个日期值
通过amount=负数,可实现减运算
4、DateDiff(Dateportion,amount,Beginning Date)
对Beginning Date中指定的日期部分进行减Amount运算。
注:DateDiff 函数并不像DateAdd函数会返回运算后的整个日期值。而只
返回从中抽取的日期部分。
注:SQL SERVER 没有提供只存储日期的数据类型,但很多应用程序只使用日期,为了
避免查询混乱,可使用一个触发器删除时间数据并只存储日期。
三、字符串函数
1、SubString()
用于返回字符串的一部分
substring(string,start Position,length)
从string中的第start Position位置开始抽取length长度的字符串。返回。
其中字符位置从1开始计算。
如:print SubString('05 29 2012 10:31AM',1,5)
结果:05 29
2、Stuff( )
将一个字符串中的某些内容用另一些字符串来替代。
Stuff(String,Start Postion,count,replace String)
参数1:被操作的字符串
参数2:指定的起始位置
参数3:替代长度
参数4:用来替代的字符串
注:替代长度和用来替代的字符串长度不一定是相等,
原理是:删除指定长度的字符串,将新的字符串复制到那个位置。
如:print Stuff('05 29 2012 10:31AM',1,2,'1234')
结果:1234 29 2012 10:31AM
3、charindex( )
charindex(Search String,String,Starting Position)
返回一个字符串1在另一个字符串2中的第几次出现的起始位置
参数1:字符串1
参数2:字符串2
参数3:指定字符串1 在字符串2 中第几次出现。
如:print charindex('05','05 29 2005 10:31AM',2)
结果:9
4、patindex( )
patindex(%pattern%,string )
查找指定模式(可包含通配符)在字符串中首次出现的位置。
如:print patindex('%[6-9]%','05 29 2005 10:31AM')
结果:5
5、Right(String,count)、Left(String,count)
返回字符串最右边的几个字符。
返回字符串最左边的几个字符。
如:print right('05 29 2005 10:31AM',2)
print left('05 29 2005 10:31AM',4)
结果:
AM
05 2
6、Len( )
Len(String)
返回字符串的长度
7、Rtrim( )、Ltrim()
Rtrim( String )删除所有字符串的前空格,
Ltrim( String )删除所有字符串的后空格,
8、Upper( )、Lower( )
Upper( String )将所有字符串中的字符大写
Lower( String )将所有字符串中的字符小写
9、Replace( Source,Search,Replace )
利用Replace字符串替换Source中的所有Serach字符串。
如:print Replace('05 29 2005 10:31AM','0','ab')
结果:ab5 29 2abab5 1ab:31AM
注:SQL Server字符串能够接受两个引号,并将其转换为单个引号。
四、Soundex函数
一种为了美国人中普查而创建的语言模式匹配系统,根据英语发音。
1、Soundex()
Soundex(‘英文字字符串’)
2、Difference(String1,STring2)
返回两个字符串的Soundex编码的差异程序。
五、数据类型转换函数
1、Cast
Cast(input as datatype)
将input转换为数据类型datatype
如:print Cast('124' as int )
2、Convert
Convert(DateType,expression[,Style])
普通转换不需要Style
一般如果将文本转换为DateTime数据类型时,需要将文本输入应用指定的格式
转换函数的日期样式表
样式 | 描述 | 格式 |
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 | 科威特 | dd mon yyyy hh:mi:ss:mmmAM |
131 | 科威特 | dd/mm/yy hh:mi:ss:mmmAM |
如:print convert(datetime,getdate())
print convert(datetime,getdate(),1)
print convert(datetime,getdate(),21)
3、Str( )
将数字转换为字符串类型
str(Number,Length,Decimal)
参数1:待转换的数字
参数2:转换后的字符串的长度
参数3:小数点的小数位数
如:print Str(245,10,3)
结果: 245.000
六、服务器环境信息
1、db_name():返回当前数据库的名称
2、getUtcDate()
3、ServerProperty(‘参数’):获取关于服务器的指定属性信息
其中参数常用取值:
Collation:排序规则类型
edition:数据库版本号
engineedittion:引擎版本 1 2 3=个人、标准、企业
instancename:如果是默认实例则为null,否则返回实例名
productversion:SQL SERVER的版本号
ProductLevel:
SeverName:SQL Server实例的全称。
返回类型
sql_variant
示例:print convert(varchar(50),ServerProperty('edition'))
结果:Express Edition (64-bit)