SqlServer字符串操作总结
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')

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。