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

常见的字符处理函数:

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','|') 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值