SQL SERVER 常用字符串操作函数,自定义函数

2019-08-20  本文已影响0人  NewForMe

今天介绍三个在数据库中常用操作字符串的函数,配合自定义函数来使用效果更佳。

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
上一篇下一篇

猜你喜欢

热点阅读