字符处理函数
sql中常见的字符类型有:
char(n) --长度固定 不可变 非Unicode 字符数据 n 必须是一个介于 1 和 8,000 之间的数值
nchar(n) --长度固定 不可变 Unicode 字符数据 n 的值必须介于 1 与 4,000 之间,字节的存储大小是所输入字符个数的两倍。
varchar(n) --长度可变 非Unicode 字符数据 n 必须是一个介于 1 和 8,000 之间的数值
nvarchar(n) -- 长度可变 Unicode 字符数据 n 的值必须介于 1 与 4,000 之间,字节的存储大小是所输入字符个数的两倍。
substring(expression,start,length) 从start开始截取length长度的字符串,下标从1开始
select substring(Sname,0,1) as '从0开始取1个字符',substring(Sname,1,1) '从1开始取1个字符',* from Student
left(expression,length)从左边开始截取length个长度的字符串, right(expression,length)从右边开始截取length个长度的字符串
select left(Sname,1) '从左边开始取1个字符',right(Sname,1) as '从右边开始取1个字符',* from Student
len(string)返回字符串长度,长度不包含尾部空格, datalength(string)返回字符串长度,长度包含尾部空格
print len(' 1234 5678 ') print datalength(' 1234 5678 ')
charindex(string,expression)获取和string相同字符串的位置
print charindex('4',' 1234 5678 ')
replace(expression,stirng_pattern,string_replacement) 查找的子字符串stirng_pattern,替换成字符串string_replacement
print replace(' 1234 5678 ','4','四')
stuff(expression,start,length,stirng)将从start开始,往后的length个长度的子字符串替换成string
print replace(' 1234 5678 ','4','四') print stuff(' 1234 5678 ',charindex('4',' 1234 5678 '),1,'四')
upper(expression)转换为大写,lower(expression)转换为小写,rtrim(expression)去除右边空格,ltrim(expression)去除右边空格
print upper(' abCDEf ') print lower(' abCDEf ') print ltrim(' abCDEf ') print rtrim(' abCDEf ')
特殊的where条件
between...and... (包含上下限)
select * from Student select * from Student where S# between 1 and 3 select * from Student where Sage between '1989-01-01' and '1990-05-20'
in
select * from Student select * from Student where S# in(01,02) or Sname in('王菊','郑竹')
like("%“代表任意一个或多个字符, "_"代表任意一个字符)
select * from Student select * from Student where Sname like '%云' or Sname like '赵_'
case...when...
select case year(Sage) when '1989' then '89年' when '1990' then '90年' when '1991' then '91年' else '不计算' end as '年份',* from Student select case when year(Sage)='1989' then '89年' when year(Sage)='1990' then '90年' when year(Sage)='1991' then '91年' else '不计算' end as '年份',* from Student