์นดํ…Œ๊ณ ๋ฆฌ:

๋ฐ˜์ •ํ˜• ๋ฐ ์ •ํ˜• ๋ฐ์ดํ„ฐ ํ•จ์ˆ˜ (๋ฐฐ์—ด/์˜ค๋ธŒ์ ํŠธ ๋งŒ๋“ค๊ธฐ ๋ฐ ์กฐ์ž‘)

ARRAYS_ZIPยถ

๊ฐ๊ฐ ์ž…๋ ฅ ๋ฐฐ์—ด์˜ n๋ฒˆ์งธ ์š”์†Œ์— ๋Œ€ํ•œ ํ‚ค-๊ฐ’ ํŽ˜์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ˜ํ™˜๋œ ๋ฐฐ์—ด์—์„œ ์ฒซ ๋ฒˆ์งธ ์˜ค๋ธŒ์ ํŠธ๋Š” ์ž…๋ ฅ ๋ฐฐ์—ด์—์„œ ๊ฐ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ํ‚ค-๊ฐ’ ํŽ˜์–ด๋ฅผ ํฌํ•จํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ์˜ค๋ธŒ์ ํŠธ๋Š” ์ž…๋ ฅ ๋ฐฐ์—ด์—์„œ ๊ฐ ๋‘ ๋ฒˆ์งธ ์š”์†Œ์˜ ํ‚ค-๊ฐ’ ํŽ˜์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ์‹์ž…๋‹ˆ๋‹ค.

๊ตฌ๋ฌธยถ

ARRAYS_ZIP( <array> [ , <array> ... ] )
Copy

์ธ์žยถ

array

์ž…๋ ฅ ๋ฐฐ์—ด.

์ž…๋ ฅ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” ๋‹ค์–‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…๋ ฅ ๋ฐฐ์—ด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ •ํ˜• ๋ฐฐ์—ด ์ธ ๊ฒฝ์šฐ ๋ชจ๋“  ์ž…๋ ฅ ๋ฐฐ์—ด์€ ์ •ํ˜• ๋ฐฐ์—ด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜ยถ

๋‹ค์Œ ํƒ€์ž… ์ค‘ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ์ž…๋ ฅ ๋ฐฐ์—ด์ด ๋ฐ˜์ •ํ˜• ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ ์ด ํ•จ์ˆ˜๋Š” ์ •ํ˜• ์˜ค๋ธŒ์ ํŠธ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐ˜์ •ํ˜• ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ์ž…๋ ฅ ๋ฐฐ์—ด์ด ์ •ํ˜• ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ ์ด ํ•จ์ˆ˜๋Š” ์ •ํ˜• ์˜ค๋ธŒ์ ํŠธ๋กœ ๊ตฌ์„ฑ๋œ ์ •ํ˜• ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ˜• ์˜ค๋ธŒ์ ํŠธ์˜ ์ •์˜๋Š” ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ์ˆ˜์™€ ๋ฐฐ์—ด์— ์žˆ๋Š” ๊ฐ’์˜ ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

  • ์ž…๋ ฅ ๋ฐฐ์—ด ์ค‘ ํ•˜๋‚˜๋ผ๋„ NULL์ด๋ฉด ์ด ํ•จ์ˆ˜๋Š” NULL์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์˜ค๋ธŒ์ ํŠธ์—๋Š” ์ž…๋ ฅ ๋ฐฐ์—ด์˜ n๋ฒˆ์งธ ์š”์†Œ ๊ฐ’์— ๋Œ€ํ•œ ํ‚ค-๊ฐ’ ํŽ˜์–ด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํ‚ค($1, $2 ๋“ฑ)๋Š” ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ๋ฐฐ์—ด์„ ์ „๋‹ฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

SELECT ARRAYS_ZIP(
  [1, 2, 3],
  ['first', 'second', 'third'],
  ['i', 'ii', 'iii']
) AS zipped_arrays;
Copy

์ด ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ธŒ์ ํŠธ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

+---------------------+
| ZIPPED_ARRAYS       |
|---------------------|
| [                   |
|   {                 |
|     "$1": 1,        |
|     "$2": "first",  |
|     "$3": "i"       |
|   },                |
|   {                 |
|     "$1": 2,        |
|     "$2": "second", |
|     "$3": "ii"      |
|   },                |
|   {                 |
|     "$1": 3,        |
|     "$2": "third",  |
|     "$3": "iii"     |
|   }                 |
| ]                   |
+---------------------+

๋ฐ˜ํ™˜๋œ ๋ฐฐ์—ด์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ์˜ค๋ธŒ์ ํŠธ์—๋Š” ๋ชจ๋“  ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • ๋‘ ๋ฒˆ์งธ ์˜ค๋ธŒ์ ํŠธ์—๋Š” ๋ชจ๋“  ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ๋‘ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • ์„ธ ๋ฒˆ์งธ ์˜ค๋ธŒ์ ํŠธ์—๋Š” ๋ชจ๋“  ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ์„ธ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์˜ค๋ธŒ์ ํŠธ์˜ ํ‚ค๋Š” ์ž…๋ ฅ ๋ฐฐ์—ด์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

  • $1 ํ‚ค-๊ฐ’ ํŽ˜์–ด์—๋Š” ์ฒซ ๋ฒˆ์งธ ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ๊ฐ’์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • $2 ํ‚ค-๊ฐ’ ํŽ˜์–ด์—๋Š” ๋‘ ๋ฒˆ์งธ ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ๊ฐ’์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • $3 ํ‚ค-๊ฐ’ ํŽ˜์–ด์—๋Š” ์„ธ ๋ฒˆ์งธ ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ๊ฐ’์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ• ๋…ธํŠธยถ

  • ๋ฐ˜ํ™˜๋œ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” ๊ฐ€์žฅ ๊ธด ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ๊ธธ์ด์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ž…๋ ฅ ๋ฐฐ์—ด์ด ๋” ์งง์€ ๊ฒฝ์šฐ ์ด ํ•จ์ˆ˜๋Š” ๋” ์งง์€ ๋ฐฐ์—ด์—์„œ ๋ˆ„๋ฝ๋œ ๋‚˜๋จธ์ง€ ์š”์†Œ์— ๋Œ€ํ•ด JSON null ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ž…๋ ฅ ๋ฐฐ์—ด์— NULL ์š”์†Œ๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ์ด ํ•จ์ˆ˜๋Š” ํ•ด๋‹น ์š”์†Œ์— ๋Œ€ํ•ด JSON null์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆยถ

๋‹ค์Œ ์˜ˆ์—์„œ๋Š” ํ•จ์ˆ˜์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๋‹จ์ผ ์ž…๋ ฅ ๋ฐฐ์—ดยถ

๋‹ค์Œ ์˜ˆ์—์„œ๋Š” ๋‹จ์ผ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ, ๋‘ ๋ฒˆ์งธ, ์„ธ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

SELECT ARRAYS_ZIP(
  [1, 2, 3]
) AS zipped_array;
Copy
+--------------+
| ZIPPED_ARRAY |
|--------------|
| [            |
|   {          |
|     "$1": 1  |
|   },         |
|   {          |
|     "$1": 2  |
|   },         |
|   {          |
|     "$1": 3  |
|   }          |
| ]            |
+--------------+

๋‹ค์ค‘ ์ž…๋ ฅ ๋ฐฐ์—ดยถ

๋‹ค์Œ ์˜ˆ์—์„œ๋Š” ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ, ๋‘ ๋ฒˆ์งธ, ์„ธ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

SELECT ARRAYS_ZIP(
  [1, 2, 3],
  [10, 20, 30],
  [100, 200, 300]
) AS zipped_array;
Copy
+---------------+
| ZIPPED_ARRAY  |
|---------------|
| [             |
|   {           |
|     "$1": 1,  |
|     "$2": 10, |
|     "$3": 100 |
|   },          |
|   {           |
|     "$1": 2,  |
|     "$2": 20, |
|     "$3": 200 |
|   },          |
|   {           |
|     "$1": 3,  |
|     "$2": 30, |
|     "$3": 300 |
|   }           |
| ]             |
+---------------+

๋‹ค์–‘ํ•œ ๊ธธ์ด์˜ ์ž…๋ ฅ ๋ฐฐ์—ดยถ

๋‹ค์Œ ์˜ˆ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๊ธธ์ด์˜ ์ž…๋ ฅ ๋ฐฐ์—ด์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋” ์งง์€ ๋ฐฐ์—ด์—๋Š” ์—†๋Š” ๊ฐ’์˜ ๊ฒฝ์šฐ ์ด ํ•จ์ˆ˜๋Š” ์˜ค๋ธŒ์ ํŠธ์—์„œ JSON null์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

SELECT ARRAYS_ZIP(
  [1, 2, 3],
  ['one'],
  ['I', 'II']
) AS zipped_array;
Copy
+------------------+
| ZIPPED_ARRAY     |
|------------------|
| [                |
|   {              |
|     "$1": 1,     |
|     "$2": "one", |
|     "$3": "I"    |
|   },             |
|   {              |
|     "$1": 2,     |
|     "$2": null,  |
|     "$3": "II"   |
|   },             |
|   {              |
|     "$1": 3,     |
|     "$2": null,  |
|     "$3": null   |
|   }              |
| ]                |
+------------------+

NULL ๋ฐ ๋นˆ ๋ฐฐ์—ด ์ฒ˜๋ฆฌยถ

๋‹ค์Œ ์˜ˆ์—์„œ ๋ณด๋“ฏ์ด, ๋ชจ๋“  ์ž…๋ ฅ ๋ฐฐ์—ด์— ๋Œ€ํ•ด NULL์„ ์ „๋‹ฌํ•  ๊ฒฝ์šฐ ์ด ํ•จ์ˆ˜๋Š” SQL NULL์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

SELECT ARRAYS_ZIP(
  [1, 2, 3],
  NULL,
  [100, 200, 300]
) AS zipped_array;
Copy
+--------------+
| ZIPPED_ARRAY |
|--------------|
| NULL         |
+--------------+

๋‹ค์Œ ์˜ˆ์—์„œ๋Š” ๋ชจ๋“  ์ž…๋ ฅ ๋ฐฐ์—ด์ด ๋น„์–ด ์žˆ์œผ๋ฏ€๋กœ ์ด ํ•จ์ˆ˜๋Š” ๋นˆ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

SELECT ARRAYS_ZIP(
  [], [], []
) AS zipped_array;
Copy
+--------------+
| ZIPPED_ARRAY |
|--------------|
| [            |
|   {}         |
| ]            |
+--------------+

๋‹ค์Œ ์˜ˆ์—์„œ ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ์ผ๋ถ€ ์š”์†Œ๋Š” NULL์ž…๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜๋œ ์˜ค๋ธŒ์ ํŠธ์—์„œ ์ด๋Ÿฌํ•œ ์š”์†Œ์˜ ๊ฐ’์€ JSON null์ž…๋‹ˆ๋‹ค.

SELECT ARRAYS_ZIP(
  [1, NULL, 3],
  [NULL, 20, NULL],
  [100, NULL, 300]
) AS zipped_array;
Copy
+-----------------+
| ZIPPED_ARRAY    |
|-----------------|
| [               |
|   {             |
|     "$1": 1,    |
|     "$2": null, |
|     "$3": 100   |
|   },            |
|   {             |
|     "$1": null, |
|     "$2": 20,   |
|     "$3": null  |
|   },            |
|   {             |
|     "$1": 3,    |
|     "$2": null, |
|     "$3": 300   |
|   }             |
| ]               |
+-----------------+