这些函数在系统函数可以找到。下面是我练习时写的代码,包含了常用的字符串操作函数
/*********************************
常用字符串函数:sql中没有数组这一说
*********************************/
--int charindex('要找的字符串','源字符串',开始位置),获取字符串中指定字符串的位置
declare @str varchar(50)
set @str='江苏|湖北|湖南|山东|山西|河南|河北'
print '原始输入数据:'+@str
print Charindex('湖',@str,1)--输出为4(字符串操作中的起始位置是1而不是0)
--区别于charindex,是一种模式匹配
--参考资料http://msdn.microsoft.com/zh-cn/library/ms190184.aspx
declare @str varchar(50)
set @str='江苏|湖北|湖南|山东|山西|河南|河北'
print '原始输入数据:'+@str
print patindex('%湖%',@str)--输出4
--string substring('源字符串',起始位置,长度),从源字符串中指定位置开始获取指定长度的字符串
declare @str varchar(50)
set @str='江苏|湖北|湖南|山东|山西|河南|河北'
print '原始输入数据:'+@str
print substring(@str,1,2)--打印出‘江苏’
--string replace(‘源字符串’'要被替换的字符串',‘要替换的字符串’)
declare @str varchar(50)
set @str='江苏|湖北|湖南|山东|山西|河南|河北'
print '原始输入数据:'+@str
print replace(@str,'|','+')--将源字符串中的-换成了+
--int len('源字符串'):求指定字符串的长度
declare @str varchar(50)
set @str='江苏|湖北|湖南|山东|山西|河南|河北'
print '字符串的长度为:'+convert(varchar(4),len(@str))--输出20
--string upper('源字符串'):转换成大写,string lower('源字符串'):转换成小写
declare @str varchar(10)
set @str='Sql Server'
print upper(@str)--输出为SQL SERVER
print lower(@str)--输出为sql server
--string ltrim('源字符串'):返回去掉前导空格后的字符串
declare @str varchar(10)
set @str=' Sql Server'
print ltrim(@str)--输出:Sql Server
--string left('源字符串',指定长度):从源字符串中最左边返回指定长度的字符串
--string right('源字符串',指定长度):从源字符串中最右边放边返回指定长度的字符串
declare @str varchar(50)
set @str='江苏|湖北|湖南|山东|山西|河南|河北'
print left(@str,5)--输出:江苏|湖北
print right(@str,5)--输出:河南|河北
--string reverser('源字符串'):反序字符创
declare @str varchar(50)
set @str='江苏|湖北|湖南|山东|山西|河南|河北'
print reverse(@str)--输出:北河|南河|西山|东山|南湖|北湖|苏江
--int difference('源字符串1',‘源字符串2’),返回2个字符串的相似度,级别从0-4一次递增
declare @str varchar(50),@str2 varchar(50)
set @str='cd'
set @str2='abced'
print difference(@str,@str2)--输出2
--string str(float,int int):返回有数值数据转化成了字符串,其中float为数值表达式,
--后面2个int型数据分别为:长度和小数位数
declare @num float
set @num=12356.654321478
print str(@num,7,1)--输出:123456.7(四舍五入)
--string stuff('源字符串',开始位置,长度,'替换表达式')
--从指定位置开始(下一个才被替换,开始位置不被替换),使用替换字符串
--替换掉源字符串中指定长度的内容
declare @str varchar(50)
set @str='江苏|湖北|湖南|山东|山西|河南|河北'
print stuff(@str,3,16,'pk')--输出江苏pk河北