select a from t
하면 a 의 데이터는
a,b,c,d,e 의 문자열이 나옵니다.
이 , 를 row 로 변경하고 싶거든요.
원하는 결과값
a
b
c
d
e
이렇게 5개 row 로요. 오라클읜 분석함수는 가능할 것 같은데 mssql 은 어떤 식으로 변경하나요?
안녕하세요 이렇게 해도 되는지는 모르겠습니다. select replace('a,b,c,d,e',',', char(10)+' ' ) 수고하세요
안녕하세요.
저같은 경우는 아래와 같은 함수를 작성해서 사용하고 있습니다.
CREATE FUNCTION [dbo].[fn_Split] (@sep char(1), @s varchar(512))
RETURNS table
AS
RETURN (
WITH Pieces(pn, start, stop) AS (
SELECT 1, 1, CHARINDEX(@sep, @s)
UNION ALL
SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
FROM Pieces
WHERE stop > 0
)
SELECT SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS s
필요하신 부분에서 응용해서 사용하시면 되실 것 같습니다.
select * from dbo.fn_split(',','a,b,c,d,e')
이렇게 실행시키면 원하시는 데로 결과가 나올겁니다.
그럼. 수고하세요!