拆分字符串
2009-09-09 10:24
134 查看
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 行受影响)
*/
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 行受影响)
*/
相关文章推荐
- Java字符串拆分问题
- C#以逗号拆分字符串,若字段中包含逗号(备注:包含逗号的字段必须有双引号引用)则对其进行拼接处理
- java 截取字符串 拆分字符串
- C#中使用Split方法拆分字符串实例
- java 拆分与合并字符串
- 拆分一个字符串并把每个字符单独输出
- MySQL种字符串拆分(substring_index)并作为关联查询条件后多列展示
- MySQL种字符串拆分(substring_index)并作为关联查询条件后多列展示
- 在论坛中出现的比较难的sql问题:25(字符串拆分3)
- Python split() 函数 拆分字符串 将字符串转化为列
- 简单的拆分字符串和冒泡排序的算法
- Oracle 字符串查询以及拆分函数
- mysql 拆分字符串
- 4-1拆分含有多种分隔符的字符串
- python基础===拆分字符串,和拼接字符串
- 请问如果我有字符串 “300,500,600-700”用JAVASCRIPT怎样才能拆分这个字符串,取得数字300 500 600 和700
- javascript 根据指定字符把字符串拆分为数组
- 【字符串操作之】将一个字符串拆分成数组→→split方法
- sqlserver字符串拆分函数
- Java拆分带空格字符串并分别赋值