create table tb (a varchar(10),b varchar(10))
insert tb
select '2009', 'AA' union all
select '2009', 'BB' union all
select '2008', 'CC' union all
select '2007', 'XX' union all
select '2009', 'HH' union all
select '2008', 'DD' union all
select '2007', 'SS' union all
select '2006', 'GG'
go
select * from tb
CREATE FUNCTION dbo.f_str(@col1 varchar(10))
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re=''
SELECT @re=@re+','+CAST(b as varchar)
FROM tb
WHERE a=@col1
RETURN(STUFF(@re,1,1,''))
END
GO
select a,dbo.f_str(a)[b] from tb group by a
a b
---------- -------------------
2006 GG
2007 XX,SS
2008 CC,DD
2009 AA,BB,HH
(所影响的行数为 4 行)
拆分:
IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GO
CREATE TABLE tb (id INT,col VARCHAR(30))
INSERT INTO tb VALUES (1,'aa,bb')
INSERT INTO tb VALUES (2,'aaa,bbb,ccc')
go
--1.2000/2005通用方法
SELECT
a.id,
col=SUBSTRING(a.col,number,CHARINDEX(',',a.col+',',number)-b.number)
FROM tb a
JOIN master..spt_values b
ON b.type='p'
--AND SUBSTRING(','+a.col,b.number,1)=',' --用此条件或下面的条件均可
AND CHARINDEX(',',','+a.col,number)=number
--2.2005以上新方法:
SELECT a.id,b.col
FROM (SELECT id,col=CAST('<v>'+REPLACE(col,',','</v><v>')+'</v>' AS xml) FROM tb) a
OUTER APPLY (SELECT col=T.C.value('.','varchar(50)') FROM a.col.nodes('/v') AS T(C)) b
--结果:
/*
id col
----------- --------------------------------------------------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
(5 行受影响)
*/
分享到:
相关推荐
SQL字符串拆分函数,可拆分任何格式的字符串,只需传入待拆分字符串及拆分参数即可
Sql Server数据库中自定义拆分字符串函数Split()
sqlserver中根据某个字符切割字符串函数,比如根据逗号切割字符串,结果返回的是一个表值函数,这个函数返回结果字段包含Id和Value,Id为序号,Value为切割后的值
如果内置函数无法满足需求,可以创建自定义PL/SQL函数来实现特定的字符串拆分逻辑。 7. **示例应用** 例如,我们有一个以逗号分隔的字符串,如"apple,banana,orange",我们可以使用`instr()` 和 `substr()` 结合...
#### SQL字符串拆分背景介绍 在实际业务场景中,我们经常会遇到需要将一个包含多个值的字符串拆分成多个独立的数据项的情况。比如,一个字段存储了以逗号分隔的商品ID列表,为了方便后续处理,我们需要将其拆分成...
内置的`STRING_SPLIT`函数是SQL Server 2016引入的,用于按分隔符拆分字符串,但这个函数可能无法满足所有特殊字符拆分需求,例如,它不支持正则表达式。在这种情况下,开发者可能会创建自定义函数,如`...
创建函数,拆分字符串
在处理字符串时,DB2提供了多种函数和过程,使得对字符串的分隔、提取和操作变得方便高效。以下将详细介绍DB2中用于字符串分隔、函数及过程的使用。 1. 字符串分隔函数: 在DB2中,最常用的字符串分隔函数是`STRIP...
### 字符串分割自定义函数(SQL) 在数据库操作过程中,我们经常会遇到需要处理字符串的情况,尤其是在没有内置数组数据类型的情况下,对字符串进行分割并转换为表格式的数据就显得尤为重要。本文将详细介绍一个...
本文将详细介绍如何使用SQL Server 2000中的T-SQL语言实现字符串的拆分功能,并提供具体的代码示例。 #### 标题解读:“sql2000字符串分割,字符串拆分” 此标题指明了文章的主要内容是关于如何在SQL Server 2000...
收集整理的SQL Server自定义函数,原文地址:http://blog.csdn.net/maco_wang ...35.SQL2000/2005字符串拆分为列表通用函数 67 36.求字符串中汉字的个数 69 37.根据年月得到当月的天数 71 38.全角半角转换函数 71
2. 利用 SQL Server 函数进行字符串拆分:可以使用 SQL Server 的字符串函数,例如 CHARINDEX、LEFT、RIGHT、LEN 等函数对字符串进行拆分。 3. 将拆分后的数据写入到临时表中:将拆分后的数据写入到第 1 步中创建的...
SQL 字符串分割函数实现多行数据转换 在数据库中,经常会遇到将一个字段中的特殊字符分割的字符串转换成多行数据的情况。这是一个常见的需求,但是网上提供的解决方案往往非常复杂,难以理解和实现。为了解决这个...
在SQL Server 2008中,没有内置的函数可以直接处理这种字符串拆分,但可以通过一些技巧实现。下面是一个可能的解决方案: ```sql -- 创建临时表存储原始数据 CREATE TABLE ta ( id INT, id_value VARCHAR(30) ); ...
为了实现这一功能,我们将采用 Oracle PL/SQL 的自定义类型和函数来完成字符串的分隔。这种方法可以有效地处理大量数据,并且具有良好的性能。 #### 四、代码实现 下面的代码展示了如何创建一个用于分隔字符串的...
在SQL Server中,字符串处理是常见的任务之一,而字符串切割函数则是处理字符串的重要工具。本文将深入探讨SQL Server中的字符串切割函数,特别是如何创建和使用用户定义函数来实现这一功能。 首先,我们要明白用户...
--用法 select * from dbo.splitstr('a,b,c,d,e') --返回表格 a b c d e --用处 select * from tbtable where ZID in (select ZValue from dbo.splitstr('a,b,c,d,e')) ...select dbo.GetCharItem('A,B,C,DE,F,GH',',',...
2、按指定符号分割字符串,返回“分割后指定索引的第几个元素”的值,象数组一样方便 3、检查一个元素是否在数组中,返回1或0 4、检查一个元素是否与数组中的相匹配,并返回相匹配的数组的值。参数值为0表示全模糊...
根据给定的信息,本文将详细解释如何在SQL中实现截取用特定字符分割的字符串中的第n个子字符串。此需求通常应用于数据处理与分析场景中,尤其在处理半结构化或非结构化的文本数据时非常有用。 ### 核心知识点解析 ...