각종 문자열 병합 처리 예시
SQL code
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
--
--
3.3.1 。
--
CREATE
TABLE
tb(col1
varchar
(
10
),col2
int
)
INSERT
tb
SELECT
'
a
'
,
1
UNION
ALL
SELECT
'
a
'
,
2
UNION
ALL
SELECT
'
b
'
,
1
UNION
ALL
SELECT
'
b
'
,
2
UNION
ALL
SELECT
'
b
'
,
3
--
--
DECLARE
@t
TABLE
(col1
varchar
(
10
),col2
varchar
(
100
))
--
DECLARE
tb
CURSOR
LOCAL
FOR
SELECT
col1,col2
FROM
tb
ORDER
BY
col1,col2
DECLARE
@col1_old
varchar
(
10
),
@col1
varchar
(
10
),
@col2
int
,
@s
varchar
(
100
)
OPEN
tb
FETCH
tb
INTO
@col1
,
@col2
SELECT
@col1_old
=
@col1
,
@s
=
''
WHILE
@@FETCH_STATUS
=
0
BEGIN
IF
@col1
=
@col1_old
SELECT
@s
=
@s
+
'
,
'
+
CAST
(
@col2
as
varchar
)
ELSE
BEGIN
INSERT
@t
VALUES
(
@col1_old
,
STUFF
(
@s
,
1
,
1
,
''
))
SELECT
@s
=
'
,
'
+
CAST
(
@col2
as
varchar
),
@col1_old
=
@col1
END
FETCH
tb
INTO
@col1
,
@col2
END
INSERT
@t
VALUES
(
@col1_old
,
STUFF
(
@s
,
1
,
1
,
''
))
CLOSE
tb
DEALLOCATE
tb
--
SELECT
*
FROM
@t
DROP
TABLE
tb
/*
-- col1 col2 ---------- ----------- a 1,2 b 1,2,3 --
*/
GO
/*
==============================================
*/
--
3.3.2 , SELECT
--
CREATE
TABLE
tb(col1
varchar
(
10
),col2
int
)
INSERT
tb
SELECT
'
a
'
,
1
UNION
ALL
SELECT
'
a
'
,
2
UNION
ALL
SELECT
'
b
'
,
1
UNION
ALL
SELECT
'
b
'
,
2
UNION
ALL
SELECT
'
b
'
,
3
GO
--
CREATE
FUNCTION
dbo.f_str(
@col1
varchar
(
10
))
RETURNS
varchar
(
100
)
AS
BEGIN
DECLARE
@re
varchar
(
100
)
SET
@re
=
''
SELECT
@re
=
@re
+
'
,
'
+
CAST
(col2
as
varchar
)
FROM
tb
WHERE
col1
=
@col1
RETURN
(
STUFF
(
@re
,
1
,
1
,
''
))
END
GO
--
SELECT
col1,col2
=
dbo.f_str(col1)
FROM
tb
GROUP
BY
col1
--
DROP
TABLE
tb
DROP
FUNCTION
f_str
/*
-- col1 col2 ---------- ----------- a 1,2 b 1,2,3 --
*/
GO
/*
==============================================
*/
--
3.3.3
--
CREATE
TABLE
tb(col1
varchar
(
10
),col2
int
)
INSERT
tb
SELECT
'
a
'
,
1
UNION
ALL
SELECT
'
a
'
,
2
UNION
ALL
SELECT
'
b
'
,
1
UNION
ALL
SELECT
'
b
'
,
2
UNION
ALL
SELECT
'
b
'
,
3
--
SELECT
col1,col2
=
CAST
(col2
as
varchar
(
100
))
INTO
#t
FROM
tb
ORDER
BY
col1,col2
DECLARE
@col1
varchar
(
10
),
@col2
varchar
(
100
)
UPDATE
#t
SET
@col2
=
CASE
WHEN
@col1
=
col1
THEN
@col2
+
'
,
'
+
col2
ELSE
col2
END
,
@col1
=
col1, col2
=
@col2
SELECT
*
FROM
#t
/*
-- col1 col2 ---------- ------------- a 1 a 1,2 b 1 b 1,2 b 1,2,3 --
*/
--
SELECT
col1,col2
=
MAX
(col2)
FROM
#t
GROUP
BY
col1
/*
-- col1 col2 ---------- ----------- a 1,2 b 1,2,3 --
*/
--
DROP
TABLE
tb,#t
GO
/*
==============================================
*/
--
3.3.4.1 <=2
--
CREATE
TABLE
tb(col1
varchar
(
10
),col2
int
)
INSERT
tb
SELECT
'
a
'
,
1
UNION
ALL
SELECT
'
a
'
,
2
UNION
ALL
SELECT
'
b
'
,
1
UNION
ALL
SELECT
'
b
'
,
2
UNION
ALL
SELECT
'
c
'
,
3
--
SELECT
col1, col2
=
CAST
(
MIN
(col2)
as
varchar
)
+
CASE
WHEN
COUNT
(
*
)
=
1
THEN
''
ELSE
'
,
'
+
CAST
(
MAX
(col2)
as
varchar
)
END
FROM
tb
GROUP
BY
col1
DROP
TABLE
tb
/*
-- col1 col2 ---------- ---------- a 1,2 b 1,2 c 3 --
*/
--
3.3.4.2 <=3
--
CREATE
TABLE
tb(col1
varchar
(
10
),col2
int
)
INSERT
tb
SELECT
'
a
'
,
1
UNION
ALL
SELECT
'
a
'
,
2
UNION
ALL
SELECT
'
b
'
,
1
UNION
ALL
SELECT
'
b
'
,
2
UNION
ALL
SELECT
'
b
'
,
3
UNION
ALL
SELECT
'
c
'
,
3
--
SELECT
col1, col2
=
CAST
(
MIN
(col2)
as
varchar
)
+
CASE
WHEN
COUNT
(
*
)
=
3
THEN
'
,
'
+
CAST
((
SELECT
col2
FROM
tb
WHERE
col1
=
a.col1
AND
col2
NOT
IN
(
MAX
(a.col2),
MIN
(a.col2)))
as
varchar
)
ELSE
''
END
+
CASE
WHEN
COUNT
(
*
)
>=
2
THEN
'
,
'
+
CAST
(
MAX
(col2)
as
varchar
)
ELSE
''
END
FROM
tb a
GROUP
BY
col1
DROP
TABLE
tb
/*
-- col1 col2 ---------- ------------ a 1,2 b 1,2,3 c 3 --
*/
GO
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깊이 중첩된 객체를 정확히 일치 검색 - PostgreSQL목차 * 🚀 * 🎯 * 🏁 * 🙏 JSON 객체 예시 따라서 우리의 현재 목표는 "고용주"사용자가 입력한 검색어(이 경우에는 '요리')를 얻고 이 용어와 정확히 일치하는 모든 사용자 프로필을 찾는 것입니다. 즐거운 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.