| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 10. ÇüÅ º¯È¯ | Fast Forward | Next |
ÇÔ¼ö È£Ãâ·Î »ç¿ëµÇ´Â ƯÁ¤ÀÇ ÇÔ¼ö´Â ÀÌÇÏÀÇ ¼ø¼¿¡ µû¶ó ÇØ°áµË´Ï´Ù.
ÇÔ¼ö ÇüÅÂÀÇ ÇØ°á
pg_proc½Ã½ºÅÛ Ä«Å»·Î±×·ÎºÎÅÍ, Á¶»çÀÇ ´ë»óÀ¸·Î ÇÏ´Â ÇÔ¼ö¸¦ ¼±ÅÃÇÕ´Ï´Ù.
¼ö½ÄµÇ¾î ÀÖÁö ¾ÊÀº ÇÔ¼ö¸íÀÌ »ç¿ëµÇ´Â °æ¿ì, Á¶»çÀÇ ´ë»óÀÌ µÇ´Â ÇÔ¼ö´Â, ÇöÇàÀÇ º¼ ¼ö ÀÖ´Â °Ë»ö °æ·Î·Î µÇ¾î ÀÖ´Â,
µ¿ÀÏÇÑ À̸§°ú ÀÎÀÚÀÇ ¼ö¸¦ °¡Áö´Â ÇÔ¼ö°¡ Á¶»ç ´ë»óÀ̶ó°í °í·ÁµË´Ï´Ù.
(Section 5.7.3¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä).
¼ö½ÄµÈ ÇÔ¼ö¸íÀÌ ÁÖ¾îÁö°í ÀÖ´Â °æ¿ì, ÁöÁ¤µÈ ½ºÅ°¸¶ÀÇ ÇÔ¼ö¸¸ÀÌ Á¶»ç ´ë»óÀ¸·Î °£Áֵ˴ϴÙ.
°Ë»ö °æ·Î·Î, ÀÎÀÚÀÇ µ¥ÀÌÅÍÇüŰ¡ °°Àº º¹¼öÀÇ ÇÔ¼ö¸¦ °ËÃâÇßÀ» °æ¿ì, ±× °æ·Î·Î ÃÖÃÊ·Î °ËÃâµÈ ÇÔ¼ö¸¸À» Á¶»ç ´ë»óÀ¸·Î °£ÁÖÇÕ´Ï´Ù. ´Ù¸¸, ÀÎÀÚÀÇ µ¥ÀÌÅÍÇüŰ¡ ´Ù¸¥ ÇÔ¼ö´Â, °Ë»ö °æ·Î³»ÀÇ À§Ä¡¿¡ °ü°è¾øÀÌ, ¶È°°ÀÌ Á¶»çÇÒ ¼ö ÀÖ½À´Ï´Ù.
Á¤È®ÇÏ°Ô ÀÔ·Â ÀÎÀÚÇüŸ¦ ¹Þ¾ÆµéÀÌ´Â ÇÔ¼ö°¡ ÀÖ´ÂÁö¸¦ °Ë»çÇÕ´Ï´Ù. ÇØ´çÇÏ´Â ÇÔ¼ö°¡ ÀÖÀ¸¸é(Á¶»çµÇ´Â ÇÔ¼öÀÇ ÁýÇÕ³»¿¡¼ Á¤È®ÇÏ°Ô ÀÏÄ¡ÇÏ´Â °ÍÀº 1°³ ¹Û¿¡ ¾ø½À´Ï´Ù), ±×°ÍÀ» »ç¿ëÇÕ´Ï´Ù (unknown¸¦ Æ÷ÇÔÇÑ °æ¿ì´Â, ÀÌ ´Ü°è¿¡¼ ÀÏÄ¡ÇÏ´Â °ÍÀº Àý´ë ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù).
Á¤È®ÇÏ°Ô ÀÏÄ¡ÇÏ´Â °ÍÀÌ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì, ±× ÇÔ¼ö È£ÃâÀÌ Æò¹üÇÑ ÇüÅ º¯È¯À» ¿ä±¸ÇÏ´ÂÁö È®ÀÎÇÕ´Ï´Ù. À̰ÍÀº, ÇÔ¼ö È£ÃâÀÌ ´Ù¸¸ 1°³ÀÇ ÀÎÀÚ¸¦ ÃëÇØ, ÇÔ¼ö¸íÀÌ ¾î¶°ÇÑ µ¥ÀÌÅÍÇüÅÂÀÇ(³»ºÎÀûÀÎ) À̸§°ú µ¿ÀÏÇÑ °æ¿ì¿¡ ¹ß»ýÇÕ´Ï´Ù. °Ô´Ù°¡ ±× ÇÔ¼öÀÇ ÀÎÀÚ´Â, unknownÇüÅÂÀÇ ¹®ÀÚ»ó¼ö³ª ÁöÁ¤µÈ µ¥ÀÌÅÍÇüÅÂ¿Í ÁöÁ¤µÈ µ¥ÀÌÅÍ ÇüÅÂ¿Í ¹ÙÀ̳ʸ® ¼öÁØ È£È¯ÀûÀ̾î¾ß ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ Á¶°Ç¿¡ ¸Â´Â °æ¿ì, ÇÔ¼ö ÀÎÀÚ´Â ¾î¶°ÇÑ ½ÇÁúÀûÀÎ ÇÔ¼ö È£Ãâ ¾øÀÌ ÁöÁ¤µÈ µ¥ÀÌÅÍ ÇüÅ·Πº¯È¯µË´Ï´Ù.
ÃÖ¼±ÀÇ °æ¿ì¸¦ º¾½Ã´Ù.
ÇÔ¼öÀÇ Èĺ¸ °¡¿îµ¥, ÀÔ·ÂÄ¡ÀÇ µ¥ÀÌÅÍÇüŰ¡ ÀÏÄ¡ÇÏÁö ¾Ê°í, ¶Ç, (ÇÔÃà º¯È¯ ÇÔ¼ö¸¦ »ç¿ëÇØ) ÀÏÄ¡Çϵµ·Ï º¯È¯ÇÒ ¼ö ¾ø´Â °ÍÀ» Á¦°ÅÇÕ´Ï´Ù. unknown¹®ÀÚ»ó¼ö´Â, »ó±âÀÇ ¸ñÀûÀ¸·Î ¹«¾ùÀÌ¶óµµ º¯È¯ °¡´ÉÇÏ´Ù°í °£ÁÖÇØÁý´Ï´Ù. 1°³ÀÇ Èĺ¸ ¹Û¿¡ ³²Áö ¾Ê´Â °æ¿ì, ±×°ÍÀ» »ç¿ëÇÕ´Ï´Ù. ±× ÀÌ¿ÜÀÇ °æ¿ì´Â ´ÙÀ½ÀÇ ´Ü°è·Î ³ª¾Æ°©´Ï´Ù.
¸ðµç È常¦ °Ë»öÇØ, ÀÔ·ÂÇüÅ¿¡ °¡Àå Á¤È®ÇÏ°Ô ¸Â´Â °ÍÀ» ³²±é´Ï´Ù (ÀÌ ¶§, µµ¸ÞÀÎÀº ±× ±âº»ÇüÅÂ¿Í µ¿ÀÏÇÏ´Ù¶ó°í °£ÁÖÇÕ´Ï´Ù). Á¤È®ÇÏ°Ô ¸Â´Â °ÍÀÌ ¾Æ¹«°Íµµ ¾øÀ¸¸é ¸ðµç È常¦ ³²±é´Ï´Ù. 1°³ÀÇ Èĺ¸ ¹Û¿¡ ³²Áö ¾Ê´Â °æ¿ì, ±×°ÍÀ» »ç¿ëÇÕ´Ï´Ù. ±× ÀÌ¿ÜÀÇ °æ¿ì´Â ´ÙÀ½ÀÇ ´Ü°è·Î ³ª¾Æ°©´Ï´Ù.
¸ðµç È常¦ °Ë»öÇØ, ÇüÅ º¯È¯ÀÌ ÇÊ¿äÇÏ°Ô µÇ´Â °÷Áß¿¡(ÀÔ·Â µ¥ÀÌÅÍÇüÅ ¸ñ·ÏÀÇ) ¹Ù¶÷Á÷ÇÑ ÇüŸ¦ ¹Þ¾ÆµéÀÌ´Â °ÍÀ» ³²±é´Ï´Ù. ¹Ù¶÷Á÷ÇÑ ÇüŸ¦ ¹Þ¾ÆµéÀÌ´Â °ÍÀÌ ¾Æ¹«°Íµµ ¾øÀ¸¸é ¸ðµç È常¦ ³²±é´Ï´Ù. 1°³ÀÇ Èĺ¸ ¹Û¿¡ ³²Áö ¾Ê´Â °æ¿ì, ±×°ÍÀ» »ç¿ëÇÕ´Ï´Ù. ±× ÀÌ¿ÜÀÇ °æ¿ì´Â ´ÙÀ½ÀÇ ´Ü°è·Î ³ª¾Æ°©´Ï´Ù.
ÀÔ·Â ÀÎÀÚ·ÎunknownÀÇ °ÍÀÌ ÀÖ´Â °æ¿ì, ±×·¯ÇÑ ³²Àº Èĺ¸¿¡ ÀÎÀÚ À§Ä¡¿¡¼ ¹Þ¾Æµé¿©Áö´Â ÇüÅ ¸ñ·ÏÀ» °Ë»çÇÕ´Ï´Ù. °¢°¢ÀÇ À§Ä¡¿¡¼ È帰¡string¸ñ·ÏÀ» ¹Þ¾ÆµéÀÌ´Â °æ¿ì´Â, ±× ¸ñ·ÏÀ» ¼±ÅÃÇÕ´Ï´Ù (unknown ÇüÅÂÀÇ ¹®ÀÚ»ó¼ö´Â ¹®ÀÚ¿°ú °°Àº °ÍÀ̹ǷÎ, ÀÌ ¹®ÀÚ¿Àº ÀûÀýÇÕ´Ï´Ù). ±×·¸Áö ¾ÊÀ¸¸é, ¸¸¾à ³²Àº ¸ðµç È帰¡ °°Àº ÇüÅ ¸ñ·ÏÀ» ¹Þ¾ÆµéÀÌ´Â °æ¿ì´Â ±× ¸ñ·ÏÀ» ¼±ÅÃÇÕ´Ï´Ù. ±×·¸Áöµµ ¾ÊÀ¸¸é, ÇÑÃþ ´õ ½Ç¸¶¸®°¡ ¾øÀ¸¹Ç·Î ¿Ã¹Ù¸¥ ¼±ÅÃÀÌ ¿¬¿ª µÉ ¼ö°¡ ¾ø±â ¶§¹®¿¡, ½ÇÆÐ°¡ µË´Ï´Ù. ¿©±â¼, ¼±ÅÃµÈ ÇüÅ ¸ñ·ÏÀ» ¹Þ¾ÆµéÀÌÁö ¾Ê´Â ¿¬»êÀÚ È帴 Á¦°ÅµË´Ï´Ù. °Ô´Ù°¡ ÁÖ¾îÁø ÀÎÀÚÀÇ À§Ä¡»óÀÇ ¹Ù¶÷Á÷ÇÑ ÇüŸ¦ ¹Þ¾ÆµéÀÌ´Â È帰¡ ÇϳªÀ̱⵵ ÇÑ °æ¿ì, ±× ÀÎÀÚÀÇ ¹Ù¶÷Á÷ÇÑ ÇüŰ¡ ¾Æ´Ñ °ÍÀ» ¹Þ¾ÆµéÀÌ´Â È帴 Á¦°ÅµË´Ï´Ù.
1°³ÀÇ Èĺ¸ ¹Û¿¡ ³²Áö ¾Ê´Â °æ¿ì, ±×°ÍÀ» »ç¿ëÇÕ´Ï´Ù. ¸¸¾à È帰¡ ¾ø´Â, ȤÀº 1°³º¸´Ù ¸¹Àº È帰¡ ³²´Â °æ¿ì´Â ½ÇÆÐÇÕ´Ï´Ù.
ÀÌ"ÃÖ¼±ÀÇ °æ¿ì"±ÔÄ¢Àº ¿¬»êÀÚ¿Í ÇÔ¼öÀÇ ÇüÅÂ ÇØ°á°ú µ¿ÀÏÇÑ °ÍÀ̹ǷΠÁÖÀÇÇØ ÁÖ¼¼¿ä. ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.
Example 10-4. ¶ó¿îµå ÇÔ¼ö ÀÎÀÚ ÇüÅÂÀÇ ÇØ°á
2°³ÀÇ ÀÎÀÚ¸¦ ÃëÇÏ´ÂroundÇÔ¼ö´Â 1°³ ¹Û¿¡ ¾ø½À´Ï´Ù
( Á¦1 ÀÎÀÚ´Ânumeric, Á¦2 ÀÎÀÚ´ÂintegerÀÔ´Ï´Ù).
±×·¯´Ï±î, ÀÌÇÏÀÇ Äõ¸®´Â ÀÚµ¿ÀûÀ¸·Î,integerÇüÅÂÀÇ Á¦1 ÀÎÀÚ¸¦numeric·Î º¯È¯ÇÕ´Ï´Ù.
SELECT round(4, 4); round -------- 4.0000 (1 row)
Àú Äõ¸®´Â ÆÄ¼¿¡ ÀÇÇØ ½ÇÁúÀûÀ¸·Î ÀÌÇÏ¿Í °°ÀÌ º¯ÇüµË´Ï´Ù.
SELECT round(CAST (4 AS numeric), 4);
¼Ò¼öÁ¡À» °¡Áö´Â ¼öÄ¡ Á¤¼ö´Â ¿ì¼±numeric¿¡ ÇÒ´çÇÒ ¼ö Àֱ⠶§¹®¿¡, ÀÌÇÏÀÇ Äõ¸®¿¡¼´Â ÇüÅ º¯È¯ÀÌ ºÒÇÊ¿äÇÕ´Ï´Ù. µû¶ó¼ Á» ´õ È¿À²Àû ÀÔ´Ï´Ù.
SELECT round(4.0, 4);
Example 10-5. ¼ºê½ºÆ®¸µ ÇÔ¼öÀÇ ÇüÅÂ ÇØ°á
substrÇÔ¼ö´Â º¹¼ö Á¸ÀçÇÕ´Ï´Ù.
±× Áß 1°³´Âtext¿ÍintegerÇüŸ¦ ÃëÇÕ´Ï´Ù.
ÇüÅÂÀÇ ÁöÁ¤ÀÌ ¾ø´Â ¹®ÀÚ¿ »ó¼ö·Î È£ÃâÇßÀ» °æ¿ì, ½Ã½ºÅÛÀº ¹Ù¶÷Á÷ÇÑ ¸ñ·Ïstring(ÁïtextÇüÅÂ)ÀÇ
ÀÎÀÚ¸¦ ¹Þ¾ÆµéÀÌ´Â Èĺ¸ ÇÔ¼ö¸¦ ¼±ÅÃÇÕ´Ï´Ù.
SELECT substr('1234', 3);
substr
--------
34
(1 row)
¹®ÀÚ¿ÀÌvarcharÇüŶó°í ¼±¾ðµÇ¾úÀ» °æ¿ì, À̰ÍÀº Å×ÀÌºí¿¡¼ ²¨³ÂÀ» °æ¿ì·Î ÃßÃøµÇÀÚ¸¸, ÆÄ¼´Â ±×°ÍÀ»text°¡ µÇµµ·Ï º¯È¯ÇÏ·Á°í ½ÃµµÇÕ´Ï´Ù.
SELECT substr(varchar '1234', 3);
substr
--------
34
(1 row)
À̰ÍÀº È¿À²ÀûÀ¸·Î ÀÌÇÏ¿Í °°ÀÌ µÇµµ·Ï ÆÄ¼¿¡ ÀÇÇØ º¯È¯µË´Ï´Ù.
SELECT substr(CAST (varchar '1234' AS text), 3);
Note: ÆÄ¼´Âpg_castīŻ·Î±×·ÎºÎÅÍtext¿Ívarchar°¡ ÀÌÁø ¼öÁØÀÇ È£È¯¼º, Áï, ¾î¶°ÇÑ ¹°¸®ÀûÀÎ º¯È¯À» ½Ç½ÃÇÏ´Â ÀÏ ¾øÀÌ ÇÑÂÊÀ» ¹Þ¾ÆµéÀÌ´Â ÇÔ¼ö¿¡ ´Ù¸¥ ÇÑÂÊÀ» °Ç³×ÁÙ ¼ö°¡ ÀÖ´Â °ÍÀ» ÇнÀÇÕ´Ï´Ù. µû¶ó¼, ÀÌ °æ¿ì ½ÇÁ¦·Î »ðÀԵǴ ÇüÅ º¯È¯ È£ÃâÀº ¾ø½À´Ï´Ù.
¶Ç,integerÇüÅÂÀÇ ÀÎÀÚ·Î ÀÌ ÇÔ¼ö°¡ ºÒ·Á °¬À» °æ¿ì, ÆÄ¼´Â ±×°ÍÀ»text·Î º¯È¯ÇÏ·Á°í ½ÃµµÇÕ´Ï´Ù.
SELECT substr(1234, 3); ERROR: function substr(integer, integer) does not exist HINT: No function matches the given name and argument types. You might need to add explicit type casts.
À̰ÍÀº ½ÇÁ¦·Î ´ÙÀ½°ú °°ÀÌ ½ÇÇàµË´Ï´Ù.
SELECT substr(CAST (1234 AS text), 3);
ÀÌ·¯ÇÑ ÀÚµ¿Àû º¯È¯Àº integer¿¡¼ text·Î ÇÔÃàÀûÀ¸·Î È£Ãâ°¡´ÉÇÑ Ä³½ºÆ®°¡ Àֱ⠶§¹®¿¡ °è¼ÓÇØ¼ ÀϾ ¼ö ÀÖ½À´Ï´Ù.