您的位置:首页 > 数据库

sql server中常见字符串处理(待续)

2016-04-06 14:32 232 查看

常见的字符处理函数:

SELECT CHARINDEX('A','ABCDE')  --returns bigint 查找字符串2中字符串1的位置,若无则返回0
SELECT LEN('ABCDE')            --返回字符串的字符数
SELECT RIGHT('ABCDE',2)        --返回字符串从右开始指定数字的字符串个数
SELECT LEFT('ABCDE',2)         --返回字符串从左开始指定数字的字符串个数
SELECT REPLACE('ABCDE','A','|')--将字符串1中的字符串2替换为字符串3
SELECT SUBSTRING('ABCDE',2,3)  --返回字符串1中的某个开始位置的固定长度的字符
SELECT LTRIM(' ABCDE')         --返回删除了前空格之后的字符
SELECT RTRIM('ABCDE ')         --返回删除了后空格之后的字符

 

 

1. 按固定字符串分隔字符。

    如:字符 '12|1|4' ,需要按字符'|' 分隔成 12 1 4

USE [text]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*创建一个表值函数,标量值函数与表值函数的区别:表值函数返回一个表,标量值函数返回值*/
CREATE FUNCTION [dbo].[fn_RowToColumn_ByID]
(
@GroupId nvarchar(max),
@ColumnStr nvarchar(max),
@Separator nvarchar(max)=','
)
returns @TABLE table
(
[id] int identity(1,1),
[name] nvarchar(max),
[Value] nvarchar(max)
)
as
begin
declare @Index int
declare @Entry nvarchar(max)
set @Index = charindex(@Separator,@ColumnStr)
while (@Index>0)
begin
set @Entry=ltrim(rtrim(substring(@ColumnStr, 1, @Index-1)))
if @Entry<>''
begin
insert into @TABLE([name],[Value]) Values(@GroupId,@Entry)
end
set @ColumnStr = substring(@ColumnStr, @Index + LEN(@Separator), len(@ColumnStr))
set @Index = charindex(@Separator, @ColumnStr)
end
set @Entry=ltrim(rtrim(@ColumnStr))
if @Entry<>''
begin
insert into @TABLE([name],[Value]) Values(@GroupId,@Entry)
end
return
END

USE [text]
GO
SELECT * FROM [dbo].[fn_RowToColumn_ByID]('A','12|1|4','|')

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: