SQL SERVER 常用字符串操作函数,自定义函数
今天介绍三个在数据库中常用操作字符串的函数,配合自定义函数来使用效果更佳。
1、left() ,right(),substring()
LEFT (<character_expression>, <integer_expression>)
返回character_expression 左起 integer_expression 个字符。
RIGHT(<character_expression>, <integer_expression>)
返回character_expression 右起 integer_expression 个字符。
SUBSTRING(<character_expression>, <integer_expression1>,<integer_expression2>)
返回character_expression 从第 integer_expression1 个字符开始,截取integer_expression2个字符。
例:
/****** Sql Server中截取字符串的常用方法 ******/
--1、LEFT()方法---
--函数说明---
--1)语法:LEFT(character,integer)
--2)介绍:参数1:要截取的字符串,参数2:截取字符个数
--3)使用:
--返回从字符串左边开始指定个数的字符--
select LEFT('SqlServer_2008',3)
--4)返回:Sql
--1、RIGHT()方法---
-- right()函数说明---
--1)语法:RIGHT(character,integer)
--2)介绍:参数1:要截取的字符串,参数2:截取字符个数
--3)使用:
--返回从字符串右边开始指定个数的字符--
select LEFT('SqlServer_2008',4)
--4)返回:2008
--1、SUBSTRING()方法---
-- substring()函数说明---
--1)语法:SUBSTRING(character,start,length)
--2)介绍:参数1:要截取的字符串,参数2:开始截取的下标,参数3:截取的字符长度
--3)使用:
--返回从字符串中间的字符--
select SUBSTRING('SqlServer_2008',4,6)
--4)返回:Server
2.charindex()
CHARINDEX (<’substring_expression’>, <expression>)
返回字符串中某个指定的子串出现的开始位置。
其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。
此函数不能用于TEXT 和IMAGE 数据类型。
例:
select charindex('cd','abcdefg') --3
select charindex('ac','abcdefg') --0
3.stuff()
STUFF ( character_expression , start , length , replaceWith_expression )
character_expression
是欲处理的字符串;
start
是删除字符的开始位置,字符串是从1开始,如果要从第二个字符删除,则start为2;
length
欲删除的字符的长度,如从第二个字符开始删除,删除三个字符,则length为2;
character_expression2
想要用来替换删除字符串的字符串(有点拗口,但是不难理解);
例:
select stuff('abcde',2,3,'mmmm')
-- ammme
--通过在第一个字符串 (abcde) 中删除从第二个位置(字符 b)开始的三个字符,
--然后在删除的起始位置插入第二个字符串,创建并返回一个字符串。
4.自定义函数
下面自定义函数作用是结合使用STUFF
函数,根据uniqueidentifier
的规则:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
将使用过C#,Guid.NewGuid().ToString("N")
格式化的GUID,在数据库直接恢复到原来的格式。
go
create function Func_ConnectionStr
(
@str varchar(100) --要处理的字符串
)
returns varchar(100)
as
begin
declare @result varchar(100) --返回结果
set @result = stuff(@str,9,0,'-')
set @result = stuff(@result,14,0,'-')
set @result = stuff(@result,19,0,'-')
set @result = stuff(@result,24,0,'-')
return @result
end
go
--使用
select [dbo].[Func_ConnectionStr]('001449860ac64d6b89e3918afe439f04')
--输出
00144986-0ac6-4d6b-89e3-918afe439f04