1:replace 函数
第一个参数你的字符串,第二个参数你想替换的部分,第三个参数你要替换成什么
select replace('lihan','a','b')
-----------------------------
lihbn
(所影响的行数为 1 行)
=========================================================
2:substring函数
第一个参数你的字符串,第二个是开始替换位置,第三个结束替换位置
select substring('lihan',0,3);
-----
li
(所影响的行数为 1 行)
=========================================================
3:charindex函数
第一个参数你要查找的char,第二个参数你被查找的字符串 返回参数一在参数二的位置
select charindex('a','lihan')
-----------
4
(所影响的行数为 1 行)
===========================================================
4:ASCII函数
返回字符表达式中最左侧的字符的 ASCII 代码值。
select ASCII('lihan')
-----------
108
(所影响的行数为 1 行)
================================================================
5:nchar函数
根据 Unicode 标准的定义,返回具有指定的整数代码的 Unicode 字符。
参数是介于 0 与 65535 之间的正整数。如果指定了超出此范围的值,将返回 NULL。
select nchar(3213)
----
unicode字符
(所影响的行数为 1 行)
=========================================================
6:soundex
返回一个由四个字符组成的代码 (SOUNDEX),用于评估两个字符串的相似性。
SELECT SOUNDEX ('lihan'), SOUNDEX ('lihon');
----- -----
L546 L542
(所影响的行数为 1 行)
=========================================================
7:char
参数为介于 0 和 255 之间的整数。如果该整数表达式不在此范围内,将返回 NULL 值。
SELECT char(125)
----
}
(所影响的行数为 1 行)
==========================================================
8:str函数
第一个参数必须为数字,第二个参数表示转化成char型占的位置,小于参数一位置返回*,大于右对齐
SELECT str(12345,3)
----
***
(所影响的行数为 1 行)
SELECT str(12345,12)
------------
12345
(所影响的行数为 1 行)
===========================================================
9:difference函数
返回一个整数值,指示两个字符表达式的 SOUNDEX 值之间的差异。
返回的整数是 SOUNDEX 值中相同字符的个数。返回的值从 0 到 4 不等:0 表示几乎不同或完全不同,4 表示几乎相同或完全相同。
SELECT difference('lihan','liha')
-----------
3
(所影响的行数为 1 行)
==================================================================
10:stuff函数(四个参数)
函数将字符串插入另一字符串。它在第一个字符串中从开始位置删除指定长度的字符;然后将第二个字符串插入第一个字符串的开始位置。
SELECT stuff('lihan',2,3,'lihan')
--------
llihann
(所影响的行数为 1 行)
===============================================================
11:left函数
返回最左边N个字符,由参数决定
select left('lihan',4)
-----
liha
(所影响的行数为 1 行)
================================================================
12 right函数
返回最右边N个字符,由参数决定
select right('lihan',4)
-----
ihan
(所影响的行数为 1 行)
================================================================
13:replicate函数
我的认为是把参数一复制参数二次
select replicate('lihan',4)
--------------------
lihanlihanlihanlihan
(所影响的行数为 1 行)
================================================================
14:len函数
返回参数长度
select len('lihan')
-----------
5
(所影响的行数为 1 行)
================================================================
15:reverse函数
反转字符串
select reverse('lihan')
-----
nahil
(所影响的行数为 1 行)
=================================================================
16:lower和upper函数
参数大小写转化
select lower(upper('lihan'))
--------------------
lihan
(所影响的行数为 1 行)
====================================================================
17:ltrim和rtrim函数
删除左边空格和右面空格
select ltrim(' lihan ')
--------------------------
lihan
(所影响的行数为 1 行)
select rtrim(' lihan')
---------
lihan
(所影响的行数为 1 行)
SQL 函数
Abs(number) 取得数值的绝对值。
Asc(String) 取得字符串表达式的第一个字符ASCII 码。
Atn(number) 取得一个角度的反正切值。
CallByName (object, procname, usecalltype,[args()]) 执行一个对象的方法、设定或传回对象的属性。
CBool(expression) 转换表达式为Boolean 型态。
CByte(expression) 转换表达式为Byte 型态。
CChar(expression) 转换表达式为字符型态。
CDate(expression) 转换表达式为Date 型态。
CDbl(expression) 转换表达式为Double 型态。
CDec(expression) 转换表达式为Decimal 型态。
CInt(expression) 转换表达式为Integer 型态。
CLng(expression) 转换表达式为Long 型态。
CObj(expression) 转换表达式为Object 型态。
CShort(expression) 转换表达式为Short 型态。
CSng(expression) 转换表达式为Single 型态。
CStr(expression) 转换表达式为String 型态。
Choose (index, choice-1[, choice-2, ... [, choice-n]]) 以索引值来选择并传回所设定的参数。
Chr(charcode) 以ASCII 码来取得字符内容。
Close(filenumberlist) 结束使用Open 开启的档案。
Cos(number) 取得一个角度的余弦值。
Ctype(expression, typename) 转换表达式的型态。
DateAdd(dateinterval, number, datetime) 对日期或时间作加减。
DateDiff(dateinterval, date1, date2) 计算两个日期或时间间的差值。
DatePart (dateinterval, date) 依接收的日期或时间参数传回年、月、日或时间。
DateSerial(year, month, day) 将接收的参数合并为一个只有日期的Date 型态的数据。
DateValue(datetime) 取得符合国别设定样式的日期值,并包含时间。
Day(datetime) 依接收的日期参数传回日。
Eof(filenumber) 当抵达一个被开启的档案结尾时会传回True。
Exp(number) 依接收的参数传回e 的次方值。
FileDateTime(pathname) 传回档案建立时的日期、时间。
FileLen(pathname) 传回档案的长度,单位是Byte。
Filter(sourcearray, match[, include[, compare]]) 搜寻字符串数组中的指定字符串,凡是数组元素中含有指定字符串,会将它们结合成新的字符串数组并传回。若是要传回不含指定字符串的数组元素,则include 参数设为False。compare 参数则是设定搜寻时是否区分大小写,此时只要给TextCompare 常数或1 即可。
Fix(number) 去掉参数的小数部分并传回。
Format(expression[, style[, firstdayofweek[, firstweekofyear]]]) 将日期、时间和数值资料转为每个国家都可以接受的格式。
FormatCurrency(expression[,numdigitsafterdecimal [,includeleadingdigit]]) 将数值输出为金额型态。
numdigitsafterdecimal 参数为小数字数,includeleadingdigit 参数为当整数为0 时是否补至整数字数。
FormatDateTime(date[,namedformat]) 传回格式化的日期或时间数据。
FormatNumber(expression[,numdigitsafterdecimal [,includeleadingdigit]]) 传回格式化
的数值数据。Numdigitsafterdecimal 参数为小数字数,includeleadingdigit 参数为当整数为0 时是否补至整数字数。
FormatPercent(expression[,numdigitsafterdecimal [,includeleadingdigit]]) 传回转换为百分比格式的数值数据。numdigitsafterdecimal 参数为小数字数,includeleadingdigit 参数为当整数为0 时是否补至整数字数。
GetAttr(filename) 传回档案或目录的属性值。
Hex(number) 将数值参数转换为16 进制值。
Hour(time) 传回时间的小时字段,型态是Integer。
Iif(expression, truepart, falsepart) 当表达式的传回值为True 时执行truepart 字段的程序,反之则执行falsepart 字段。
InStr([start, ]string1, string2) 搜寻string2 参数设定的字符出现在字符串的第几个字符,start 为由第几个字符开始寻找,string1 为欲搜寻的字符串,string2 为欲搜寻的字符。
Int(number) 传回小于或等于接收参数的最大整数值。
IsArray(varname) 判断一个变量是否为数组型态,若为数组则传回True,反之则为False。
IsDate(expression) 判断表达式内容是否为DateTime 型态,若是则传回True,反之则为False。
IsDbNull(expression) 判断表达式内容是否为Null,若是则传回True,反之则为False。
IsNumeric(expression) 判断表达式内容是否为数值型态,若是则传回True,反之则为False。
join(sourcearray[, delimiter]) 将字符串数组合并唯一个字符串,delimiter 参数是设定在各个元素间加入新的字符串。
Lcase(string) 将字符串转换为小写字体。
Left(string, length) 由字符串左边开始取得length 参数设定长度的字符。
Len(string) 取得字符串的长度。
Log(number) 取得数值的自然对数。
Ltrim(string) 去掉字符串的左边空白部分。
Mid(string, start[, length]) 取出字符串中strat 参数设定的字符后length 长度的字符串,若length 参数没有设定,则取回start 以后全部的字符。
Minute(time) 取得时间内容的分部分,型态为Integer。
MkDir(path) 建立一个新的目录。
Month(date) 取得日期的月部分,型态为Integer。
MonthName(month) 依接收的月份数值取得该月份的完整写法。
Now() 取得目前的日期和时间。
Oct(number) 将数值参数转换为8 进制值。
Replace(expression, find, replace) 将字符串中find 参数指定的字符串转换为replace 参数指定的字符串。
Right(string,length) 由字符串右边开始取得length 参数设定长度的字符。
RmDir(path) 移除一个空的目录。
Rnd() 取得介于0 到1 之间的小数,如果每次都要取得不同的值,使用前需加上Randomize 叙述。
Rtrim(string) 去掉字符串的右边空白部分。
Second(time) 取得时间内容的秒部分,型态为Integer。
Sign(number) 取得数值内容是正数或负数,正数传回1,负数传回-1,0 传回0。
Sin(number) 取得一个角度的正弦值。
Space(number) 取得number 参数设定的空白字符串。
Split(expression[, delimiter]) 以delimiter 参数设定的条件字符串来将字符串分割为字符串数组。
Sqrt(number) 取得一数值得平方根。
Str(number) 将数字转为字符串后传回。
StrReverse(expression) 取得字符串内容反转后的结果。
Tan(number) 取得某个角度的正切值。
TimeOfDay() 取得目前不包含日期的时间。
Timer() 取得由0:00 到目前时间的秒数,型态为Double。
TimeSerial(hour, minute, second) 将接收的参数合并为一个只有时间Date 型态的数据。
TimaValue(time) 取得符合国别设定样式的时间值。
Today() 取得今天不包含时间的日期。
Trim(string) 去掉字符串开头和结尾的空白。
TypeName(varname) 取得变量或对象的型态。
Ubound(arrayname[, dimension]) 取得数组的最终索引值,dimension 参数是指定取得第几维度的最终索引值。
Ucase(string) 将字符串转换为大写。
Val(string) 将代表数字的字符串转换为数值型态,若字符串中含有非数字的内容则会将其去除后,合并为一数字。
Weekday(date) 取的参数中的日期是一个星期的第几天,星期天为1、星期一为2、星期二为3 依此类推。
WeekDayName(number) 依接收的参数取得星期的名称,可接收的参数为1 到7,星期天为1、星期一为2、星期二为3 依此类推。
聚合函数
MAX(字段) 求某字段中的最大值
MIN(字段) 求某字段中的最小值
AVG(字段) 求某字段中的平均值
SUM(字段) 求某字段中的总和
COUNT(字段) 统计某字段非空纪录数
COUNT (*) 统计纪录数
聚合函数练习
查询Products表,所有UnitPrice之和
查询Products表,所有高于50的UnitPrice之和
查询Products表,所有UnitPrice之平均值
查询Customers表,共有多少Customer
查询Customers表,共有多少Country
查询Products表,UnitPrice的最大值
日期函数
GETDATE()
作用:获取当前日期时间
DATEPART(datepart , date)
作用:获取日期或时间的一部分。有两个参数,date代表要被操作的日期。datepart代表要获取的部分。
DATEDIFF(datepart , startdate , enddate)
作用:比较两个日期某一部分的差值,通常startdate代表较早的日期 , enddate代表较晚的
DATEADD (datepart , number, date)
作用:在date基础上加上一段时间
YEAR(date)
等价于DATEPART(year , date)
MONTH(date)
等价于DATEPART(month , date)
DAY(date)
等价于DATEPART(day , date)
Datepart Abbr.
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
weekday dw
hour hh
minute mi, n
second ss, s
millisecond ms
四舍五入保留两位小数
print Round(5.5678,2)
向下取整
print Floor(1.9)
向上取整
print Ceiling(2.1)
create table score
(stuId int,
ps int,
jm int
)
insert into score values(1,99,54)
insert into score values(1,85,43)
insert into score values(1,92,71)
select stuId,ceiling(ps*0.35+jm*0.65)
from Score
print rand()*100
CHARINDEX
返回字符串中指定表达式的起始位置。
语法
CHARINDEX ( expression_r1 , expression_r2 [ , start_location ] )
print charindex('hello','gsfjhellokjhellosa',7)
REPLACE
用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。
语法
REPLACE ( 'string_expression_r1' , 'string_expression_r2' , 'string_expression_r3' )
print replace('hjgfyangjhg yang yangjhgujj','yang','chen')
LEFT RIGHT
返回从字符串左边开始指定个数的字符。
语法
LEFT ( character_expression_r , integer_expression_r )
print left('zhang',2)
SUBSTRING
返回字符表达式的一部分。
SUBSTRING ( expression_r , start , length )
print substring('zhang',2,3)
LEN
返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格。
语法
LEN ( string_expression_r )
print len('yang')
LTRIM RTRIM
删除起始空格后返回字符表达式。
语法
LTRIM ( character_expression_r )
print rtrim(ltrim(' hfdfd '))
字符串函数练习
有某个学校学号格式:
地区编号(1-2位)-入学年份(4位)-学号(1-3位)
比如5-2006-34 或12-2004-7,
create table students
(
stuid varchar(12),
stuname varchar(10)
)
insert into students values('5-2006-34','zhang')
insert into students values('9-2007-4','wang')
insert into students values('16-2006-154','yang')
insert into students values('16-2007-13','lang')
1.请写一个SQL语句列出2006年学生名单;
select * from students
where substring(stuid,charindex('-',stuid)+1,4)='2006'
2.列出2006年名单并按学号排序
select * from students
where substring(stuid,charindex('-',stuid)+1,4)='2006'
order by convert --5.将字符串形式转成数字
(int,
right --4.取第二个'-'后面的部分
(stuid,
len(stuid) --3.字符串总长
-charindex
('-',stuid, --2.得到第二个'-'的位置
charindex('-',stuid)+1 --1.得到第一个'-'的下一个位置
)
)
)
desc
本文来自CSDN博客:http://blog.csdn.net/fangyuan303687320/archive/2009/09/09/4535941.aspx