Sql Server 字符串操作总结
Posted Wǒ々啊申々
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sql Server 字符串操作总结相关的知识,希望对你有一定的参考价值。
SQL Server 支持两种字符数据类型---常规和Unicode;常规类型包括char 和varchar;unicode包括nchar 和nvarchar。常规的每个字符占用一个字节存储,而unicode数据类型每个字符占用2个字节,并且需要一个代理项对时需要4个字节。如果为列选择了常规字符类型,会被限制除英文外只能使用一种语言。使用unicode数据类型可以支持多种语言。如果需要存储多种语言的字符数据,应该使用unicode字符类型。
-- 1、字符串连接 使用“+”运算符
select empid,firstname + \' \' + lastname as fullname from HR.Employees
-- 连接null的结果直接输出null
select custid,country,region,city, country +\' \' +region +\' \' +city as location from sales.Customers
-- 2、substring函数 substring(string,start,length)此处需要注意sql的开始位置是从1开始的; substring函数可以从字符串中提取一个新的字符串
select SUBSTRING(\'abcd\',1,2) --返回ab
select SUBSTRING(\'abcd\',1,6) --如果长度超出字符串长度不报错,而是输出到字符串的最后一位
-- 3、left 和right 函数;这两个函数是substring的简化形式,可以从指定字符串的左边或者右边返回指定长度的新字符串 left(string,n) right(string,n)
select LEFT(\'abcd\',1) --返回a
select RIGHT(\'abcd\',2) --返回cd
-- 4、len和datalength函数;len函数返回指定字符串的长度;datalength返回指定字符串的字节长度;
-- 在常规数据类型中每个字符需要一个字节存储,所以两个函数返回值是一样的;
-- unicode字符,每个字符需要两个存储字节(大部分情况下)
select LEN(\'abcd\') --返回4
select DATALENGTH(\'abcd\') --返回4
select DATALENGTH(N\'abcd\') --返回8
-- 5、charindex函数;返回子字符串在字符串中第一次出现的位置
select charindex(\'abc\',\'xyzabcdefabc\') --返回4
-- 可以选择第三个参数 指定开始查找的位置
select charindex(\'abc\',\'xyzabcdefabc\',5) --返回10
-- 6、patindex函数;这个函数和sql中的like谓词类似
select PATINDEX(\'%1%\',\'abcd1234abcd\') --返回5
-- 7、replace(string,str1,str2)函数;在字符串中使用str2替换string中所有的str1;
select REPLACE(\'abcd1234abcd\',\'a\',\'#\')
-- 该函数另外一个用法;计算某个字符在字符串中出现的次数
select len(\'abcde\')- len(replace(\'abcde\',\'a\',\'\')) --a在字符串中出现1次
select len(\'abcdeabcd\')- len(replace(\'abcdeabcd\',\'a\',\'\')) -- a在字符串中出现2次
-- 8、replicate函数;按照指定的次数重复出现一个字符串
select REPLICATE(\'abc#\',3)
-- 实际应用 供应商编号固定位10位,不足10位在前面补0
select supplierid,RIGHT(REPLICATE(\'0\',9) + cast(supplierid as varchar(10)),10) as strsupplierid from Production.Products
-- 9、stuff函数;允许从字符串中移除指定数量的字符串,并插入一个替代的新子字符串
-- stuff(string,index,delete_length,indertstring)
select STUFF(\'abc\',1,2,\'12345\') --返回12345c
select STUFF(\'abcd\',4,1,\'123\') -- 返回abc123
-- 10、upper和lower函数;返回大写和小写字符串
select UPPER(\'abCD\') --返回‘ABCD’
select LOWER(\'abCD\') --返回‘abcd’
-- 11、ltrim、rtrim函数去掉左边或者右边的空字符串
select LTRIM(\' abc \') --返回\'abc \'
select Rtrim(\' abc \') --返回\' abc\'
-- 12、Format函数;将输入的值按照指定格式返回 -注意这个函数只有在SQL Server2012以上才可以使用
-- 例8中返回指定长度的字符串可以用format很简单的完成
select FORMAT(\'123\',\'0000000000\')
select FORMAT(getdate(),\'YYYY-MM-DD\')
以上是关于Sql Server 字符串操作总结的主要内容,如果未能解决你的问题,请参考以下文章