今天介紹三個在數(shù)據(jù)庫中常用操作字符串的函數(shù)驶拱,配合自定義函數(shù)來使用效果更佳霜浴。
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()方法---
--函數(shù)說明---
--1)語法:LEFT(character,integer)
--2)介紹:參數(shù)1:要截取的字符串,參數(shù)2:截取字符個數(shù)
--3)使用:
--返回從字符串左邊開始指定個數(shù)的字符--
select LEFT('SqlServer_2008',3)
--4)返回:Sql
--1、RIGHT()方法---
-- right()函數(shù)說明---
--1)語法:RIGHT(character,integer)
--2)介紹:參數(shù)1:要截取的字符串喝检,參數(shù)2:截取字符個數(shù)
--3)使用:
--返回從字符串右邊開始指定個數(shù)的字符--
select LEFT('SqlServer_2008',4)
--4)返回:2008
--1嗅辣、SUBSTRING()方法---
-- substring()函數(shù)說明---
--1)語法:SUBSTRING(character,start,length)
--2)介紹:參數(shù)1:要截取的字符串,參數(shù)2:開始截取的下標(biāo)挠说,參數(shù)3:截取的字符長度
--3)使用:
--返回從字符串中間的字符--
select SUBSTRING('SqlServer_2008',4,6)
--4)返回:Server
2.charindex()
CHARINDEX (<’substring_expression’>澡谭, <expression>)
返回字符串中某個指定的子串出現(xiàn)的開始位置。
其中substring _expression 是所要查找的字符表達(dá)式损俭,expression 可為字符串也可為列名表達(dá)式蛙奖。如果沒有發(fā)現(xiàn)子串,則返回0 值杆兵。
此函數(shù)不能用于TEXT 和IMAGE 數(shù)據(jù)類型雁仲。
例:
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
想要用來替換刪除字符串的字符串(有點(diǎn)拗口,但是不難理解)政钟;
例:
select stuff('abcde',2,3,'mmmm')
-- ammme
--通過在第一個字符串 (abcde) 中刪除從第二個位置(字符 b)開始的三個字符路克,
--然后在刪除的起始位置插入第二個字符串,創(chuàng)建并返回一個字符串养交。
4.自定義函數(shù)
下面自定義函數(shù)作用是結(jié)合使用STUFF
函數(shù)精算,根據(jù)uniqueidentifier
的規(guī)則:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
將使用過C#,Guid.NewGuid().ToString("N")
格式化的GUID碎连,在數(shù)據(jù)庫直接恢復(fù)到原來的格式灰羽。
go
create function Func_ConnectionStr
(
@str varchar(100) --要處理的字符串
)
returns varchar(100)
as
begin
declare @result varchar(100) --返回結(jié)果
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