sql 分隔符字符串转换成表以及多行记录列值转换成字符串
2015-01-10 16:11
232 查看
--1. 字符串(分隔符分隔组成的字符串)转换成多行记录的表 -- Function create FUNCTION [dbo].[fn_Split1]( @String nvarchar (max), @Delimiter nvarchar (10) ) RETURNS @ValueTable TABLE ([Value] NVARCHAR(max),[id] int) BEGIN DECLARE @NextString nvarchar(max), @Pos int, @NextPos int, @CommaCheck nvarchar(1), @id int set @id=1 SET @NextString = '' SET @CommaCheck = right(@String,1) SET @String = @String + @Delimiter SET @Pos = CHARINDEX(@Delimiter,@String) SET @NextPos = 1 WHILE (@pos <> 0) BEGIN SET @NextString = SUBSTRING(@String,1,@Pos - 1) INSERT INTO @ValueTable ( [Value],[id]) VALUES (@NextString,@id) SET @String = SUBSTRING(@String,@pos +1,LEN(@String)) SET @NextPos = @Pos SET @pos = CHARINDEX(@Delimiter,@String) set @id = @id +1 END RETURN END GO --使用 SELECT * FROM dbo.fn_Split1('11111;22222;3333;4444',';'); --结果,列如下 /* Value id ---------- 11111 1 22222 2 3333 3 4444 4 */ --2.多行记录某一个列,转换成一个字符串 IF EXISTS(SELECT TOP 1 1 FROM sysobjects WHERE id=OBJECT_ID('fn_GetProductTypeCodeList') AND type='FN') DROP FUNCTION fn_GetProductTypeCodeList GO CREATE FUNCTION fn_GetProductTypeCodeList ( @chvReportProductTypeGUID varchar(40)) RETURNS varchar(max) AS BEGIN declare @chvProductTypeCodeList varchar(max) set @chvProductTypeCodeList = '' select @chvProductTypeCodeList = @chvProductTypeCodeList+';'+ ProductTypeCode from p_Report2ProductType WHERE ReportProductTypeGUID=@chvReportProductTypeGUID set @chvProductTypeCodeList = stuff(@chvProductTypeCodeList,1,1,'') return @chvProductTypeCodeList END GO --使用 SELECT dbo.fn_GetProductTypeCodeList(NEWID()) --结果 /* --多行数据 Value id -------------- 11111 1 22222 2 3333 3 4444 4 --最后得到 11111;22222;3333;4444 */
相关文章推荐
- sql 多行转换为一行(STUFF及PIVOT的用法) ||SQL 合并列值和拆分列值
- 使用SQL如何把用逗号等字符隔开的字符串转换成列表,以及把列合并成符合隔开的字符串(转)
- sql把查询的多行记录合并成字符串
- 4.PL_SQL――变量声明以及初始化,字符串分隔符
- T-SQL Table-valued Function使用分隔符将字符串转换为表
- 用SQL将Oracle中同一列的多行记录拼接成一个字符串
- ORACLE 用SQL同一列的多行记录拼接成一个字符串
- 同一列的多行字符串数据用SQL怎么转换成同一列的一行数据
- SQL语句--行列转换以及字符串求和
- MSSQL 关于16进制与字符串以及10进制的简单转换,以及SQL的16进制的截取
- 多条记录合并成一个字符串的SQL文
- 将一个以逗号分隔的字符串拆分单个记录,并生成插入sql语句
- SQL Server将字符串转换为多行
- SQL 中的单列数据到多列数据的转换,以及转换后的分组统计
- 在db2中,如何在sql语句中将yyyymmdd格式的字符串转换为timestamp
- 转换IP地址为字符串的SQL语句
- SQL中合并多行记录的方法总汇
- 防止Sql注入字符串 , 变量赋值时防止为空和类型转换
- 将SQL语句转换为符合VB.NET格式字符串
- SQL Server将数据库中多行中的某个字段转换为字符串