日期:2014-05-18 浏览次数:20652 次
DECLARE @s VARCHAR(1000)
SET @s = 'a,b,c,d'
--1.
DECLARE @s1 VARCHAR(1000)
SET @s1 = RIGHT(REPLACE(',' + @s, ',', ''' AS s UNION SELECT '''),
LEN(REPLACE(',' + @s, ',', ''' AS s UNION SELECT ''')) - 12) + ''''
EXEC(@s1)
--2
SELECT REPLACE(REVERSE(( LEFT(s, CHARINDEX(',', s)) )), ',', '') AS S
FROM ( SELECT r ,
REVERSE(LEFT(@s, r)) + ',' AS s
FROM ( SELECT ( SELECT COUNT (*) FROM sysobjects WHERE name<= t.name
) AS r
FROM sysobjects t
) a
WHERE r <= LEN(@s)
AND LEFT(@s + ',', r + 1) LIKE '%,'
) t
ORDER BY r
------解决方案--------------------
我发现嫂子写代码巨快而且巨霸气的
------解决方案--------------------
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')
BEGIN
DROP TABLE tba
END
GO
CREATE TABLE tba
(
ID INT,
Memo VARCHAR(100)
)
GO
INSERT INTO tba
SELECT 1,'a,b,c,d' UNION
SELECT 2,'e,f,g,h,k'
GO
DECLARE @sql VARCHAR(1000) = ''
SELECT @sql = @sql + 'SELECT ''' + REPLACE(Memo, ',', ''' AS Col UNION SELECT ''') + ''' UNION '
FROM tba
SET @sql = LEFT(@sql,LEN(@sql) - 5)
EXEC (@sql)
Col
a
b
c
d
e
f
g
h
k
------解决方案--------------------