| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 10. ÇüÅ º¯È¯ | Fast Forward | Next |
¿¬»êÀÚ È£Ãâ·Î »ç¿ëµÇ´Â ƯÁ¤ÀÇ ¿¬»êÀÚ´Â ÀÌÇÏÀÇ ¼ø¼¿¡ µû¶ó °áÁ¤µË´Ï´Ù. ÀÌ ¼ø¼´Â »çÀü¿¡ ÇàÇØÁø ¿¬»êÀÚ È£Ãâ¿¡ ÀÇÇØ °£Á¢ÀûÀÎ ¿µÇâÀ» ¹Þ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀºSection 4.1.6À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
¿¬»êÀÚ ÇüÅÂÀÇ ÇØ°á
pg_operator½Ã½ºÅÛ Ä«Å»·Î±×·ÎºÎÅÍ, Á¶»çÀÇ ´ë»óÀ¸·Î ÇÏ´Â ¿¬»êÀÚ¸¦ ¼±ÅÃÇÕ´Ï´Ù.
°ËÁõµÇÁö ¾ÊÀº ¿¬»êÀÚ¸íÀÌ »ç¿ëµÇ´Â °æ¿ì(Åë»óÀÇ ÄÉÀ̽º), ¿¬»êÀÚ´Â,
ÇöÀç °Ë»ö °æ·Î°¡ º¸ÀÌ´Â Á¤È®ÇÑ À̸§°ú ÀÎÀÚÀÇ ¼ö¸¦ °¡Áö´Â ¿¬»êÀÚ°¡ Á¶»ç ´ë»óÀ̶ó°í °£ÁÖÇÕ´Ï´Ù.
(Section 5.7.3¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä).
¼ö½ÄµÈ ¿¬»êÀÚ¸íÀÌ ÁÖ¾îÁö°í ÀÖ´Â °æ¿ì, ÁöÁ¤µÈ ½ºÅ°¸¶ÀÇ ¿¬»êÀÚ¸¸ÀÌ Á¶»ç ´ë»óÀ¸·Î °£ÁֵǾîÁý´Ï´Ù.
°Ë»ö °æ·Î·Î ÀÎÀÚÀÇ µ¥ÀÌÅÍÇüÅÂÀÌ °°Àº º¹¼öÀÇ ¿¬»êÀÚ¸¦ °ËÃâÇßÀ» °æ¿ì, ±× °æ·Î·Î ÃÖÃÊ·Î °ËÃâµÈ ¿¬»êÀÚ¸¸À» Á¶»ç ´ë»óÀ¸·Î °£ÁÖÇÕ´Ï´Ù. ´Ù¸¸, ÀÎÀÚÀÇ µ¥ÀÌÅÍÇüŰ¡ ´Ù¸¥ ¿¬»êÀÚ´Â, °Ë»ö °æ·Î³»ÀÇ À§Ä¡¿¡ °ü°è¾øÀÌ, °°Àº À§Ä¡¿¡ ÀÖÀ¸¸é µ¿ÀÏÇÑ ±âÃÊ·Î °£Áֵ˴ϴÙ.
Á¤È®ÇÏ°Ô ÀÔ·Â ÀÎÀÚÇüÀ» ¹Þ¾ÆµéÀÌ´Â ¿¬»êÀÚÀÇ ¿©ºÎ¸¦ °Ë»çÇÕ´Ï´Ù. ÇØ´çÇÏ´Â ¿¬»êÀÚ°¡ ÀÖÀ¸¸é(Á¶»çµÇ´Â ¿¬»êÀÚÀÇ ÁýÇÕ³»¿¡¼ Á¤È®ÇÏ°Ô ÀÏÄ¡ÇÏ´Â °ÍÀº 1°³ ¹Û¿¡ ¾ø½À´Ï´Ù), ±×°ÍÀ» »ç¿ëÇÕ´Ï´Ù.
2Ç׿¬»êÀÚÀÇ ÇϳªÀÇ ÀÎÀÚ°¡unknownÇüÅ¿´À» °æ¿ì, ÀÌ °Ë»ç´Â ´Ù¸¥ ÇÑÂÊÀÇ ÀÎÀÚ°¡ µ¿ÀÏÇÑ ÇüŶó°í °¡Á¤ÇÕ´Ï´Ù. ´Ù¸¥unknown¸¦ Æ÷ÇÔÇÑ °æ¿ì´Â, ÀÌ ´Ü°è¿¡¼´Â ´ë»óÀ» ã¾Æ³¾ ¼ö ¾ø½À´Ï´Ù.
°¡Àå Àß ¸Â´Â °ÍÀ» °Ë»öÇÕ´Ï´Ù.
¿¬»êÀÚÀÇ Èĺ¸ °¡¿îµ¥, ÀÔ·ÂÄ¡ÀÇ µ¥ÀÌÅÍÇüŰ¡ ÀÏÄ¡ÇÏÁö ¾Ê°í, ¶Ç, (ÇÔÃàÀû º¯È¯ ÇÔ¼ö¸¦ »ç¿ëÇØ) ÀÏÄ¡Çϵµ·Ï º¯È¯ÇÒ ¼ö ¾ø´Â °ÍÀ» »èÁ¦ÇÕ´Ï´Ù. unknown¹®ÀÚ»ó¼ö´Â, »ó±âÀÇ ¸ñÀûÀ¸·Î ¹«¾ùÀÌ¶óµµ º¯È¯ °¡´ÉÇÏ´Ù°í ÃßÁ¤µÇ¾îÁý´Ï´Ù. 1°³ÀÇ Èĺ¸ ¹Û¿¡ ³²Áö ¾Ê´Â °æ¿ì, ±×°ÍÀ» »ç¿ëÇÕ´Ï´Ù. ±× ÀÌ¿ÜÀÇ °æ¿ì´Â ´ÙÀ½ÀÇ ´Ü°è·Î ³ª¾Æ°©´Ï´Ù.
¸ðµç È常¦ °Ë»öÇØ, ÀÔ·ÂÇüÅ¿¡ °¡Àå Á¤È®ÇÏ°Ô ¸Â´Â °ÍÀ» ³²±é´Ï´Ù (ÀÌ ¶§, µµ¸ÞÀÎÀº ±× ±âº»ÇüÅÂ¿Í µ¿ÀÏÇÏ´Ù°í °£ÁÖÇÕ´Ï´Ù). Á¤È®ÇÏ°Ô ¸Â´Â °ÍÀÌ ¾Æ¹«°Íµµ ¾øÀ¸¸é ¸ðµç È常¦ ³²±é´Ï´Ù. 1°³ÀÇ Èĺ¸ ¹Û¿¡ ³²Áö ¾Ê´Â °æ¿ì, ±×°ÍÀ» »ç¿ëÇÕ´Ï´Ù. ±× ÀÌ¿ÜÀÇ °æ¿ì´Â ´ÙÀ½ÀÇ ´Ü°è·Î ³ª¾Æ°©´Ï´Ù.
¸ðµç È常¦ °Ë»öÇØ, ÇüÅ º¯È¯ÀÌ ÇÊ¿äÇÏ°Ô µÇ´Â °÷¿¡¼(ÀÔ·Â µ¥ÀÌÅÍÇüÅ ¸ñ·ÏÀÇ) ¹Ù¶÷Á÷ÇÑ ÇüŸ¦ ¹Þ¾ÆµéÀÌ´Â °ÍÀ» ³²±é´Ï´Ù. ¹Ù¶÷Á÷ÇÑ ÇüŸ¦ ¹Þ¾ÆµéÀÌ´Â °ÍÀÌ ¾Æ¹«°Íµµ ¾øÀ¸¸é ¸ðµç È常¦ ³²±é´Ï´Ù. 1°³ÀÇ Èĺ¸ ¹Û¿¡ ³²Áö ¾Ê´Â °æ¿ì, ±×°ÍÀ» »ç¿ëÇÕ´Ï´Ù. ±× ÀÌ¿ÜÀÇ °æ¿ì´Â ´ÙÀ½ÀÇ ´Ü°è·Î ³ª¾Æ°©´Ï´Ù.
ÀÔ·Â ÀÎÀÚ·ÎunknownÀÇ °ÍÀÌ ÀÖ¾úÀ» °æ¿ì, ±×·¯ÇÑ ³²Àº Èĺ¸¿¡°Ô ÀÎÀÚ À§Ä¡¿¡¼ ¹Þ¾Æµé¿©Áö´Â ÇüÅ ¸ñ·ÏÀ» °Ë»çÇÕ´Ï´Ù. È帰¡string¸ñ·ÏÀ» ¹Þ¾ÆµéÀÌ´Â °æ¿ì´Â, ±× ¸ñ·ÏÀ» ¼±ÅÃÇÕ´Ï´Ù (unknown ÇüÀÇ ¹®ÀÚ»ó¼ö´Â ¹®ÀÚ¿°ú °°Àº °ÍÀ̹ǷÎ, ÀÌ ¹®ÀÚ¿¿¡ ´ëÇÑ ¹æ¹ýÀº ÀûÀýÇÕ´Ï´Ù). ±×·¸Áö ¾ÊÀ¸¸é, ¸¸¾à ³²Àº ¸ðµç È帰¡ °°Àº ÇüÅ ¸ñ·ÏÀ» ¹Þ¾ÆµéÀÌ´Â °æ¿ì´Â ±× ¸ñ·ÏÀ» ¼±ÅÃÇÕ´Ï´Ù. ±×·¸Áöµµ ¾ÊÀ¸¸é, ÇÑÃþ ´õ ½Ç¸¶¸®°¡ ¾øÀ¸¸é ¿Ã¹Ù¸¥ ¼±ÅÃÀÌ ¿¬¿ª µÉ ¼ö°¡ ¾ø±â ¶§¹®¿¡, ½ÇÆÐ°¡ µË´Ï´Ù. ¿©±â¼, ¼±ÅÃµÈ ÇüÅ ¸ñ·ÏÀ» ¹Þ¾ÆµéÀÌÁö ¾Ê´Â ¿¬»êÀÚ È帴 »èÁ¦µË´Ï´Ù. °Ô´Ù°¡ ÁÖ¾îÁø ÀÎÀÚÀÇ À§Ä¡»óÀÇ ¹Ù¶÷Á÷ÇÑ ÇüŸ¦ ¹Þ¾ÆµéÀÌ´Â È帰¡ ÇϳªÀ̱⵵ ÇÑ °æ¿ì, ±× ÀÎÀÚÀÇ ¹Ù¶÷Á÷ÇÑ ÇüÅ´ ¾Æ´Ñ °ÍÀ» ¹Þ¾ÆµéÀÌ´Â È帴 »èÁ¦µË´Ï´Ù.
1°³ÀÇ Èĺ¸ ¹Û¿¡ ³²Áö ¾Ê´Â °æ¿ì, ±×°ÍÀ» »ç¿ëÇÕ´Ï´Ù. ¸¸¾à È帰¡ ¾ø´Â, ȤÀº 1°³º¸´Ù ¸¹Àº È帰¡ ³²´Â °æ¿ì´Â ½ÇÆÐÇÕ´Ï´Ù.
¸î°¡Áö ¿¹°¡ ÀÖ½À´Ï´Ù.
Example 10-1. °è½Â¿¬»êÀÚ ÇüÅÂ ÇØ°á
īŻ·Î±× ³»¿¡ bigint¸¦ double precisionÇüÅÂÀÇ ÀÎÀÚ·Î ÇÏ´Â ´©½Â¿¬»êÀÚ´Â ¿ÀÁ÷ ÇϳªÀÔ´Ï´Ù. (! ¸¦ ÈÄ¿¡ ºÙÀÔ´Ï´Ù). ½ºÄ³³Ê´Â ÀÌÇÏÀÇ Äõ¸®½ÄÀÇ µÎ ÀÎÀÚ¿¡ ¿ì¼±integerÇüŸ¦ ÇÒ´çÇÕ´Ï´Ù.
SELECT 2 ^ 3 AS "exp"; exp ----- 8 (1 row)
ÆÄ¼´Â ¿¬»ê¼ö¸¦ ÇüÅ º¯È¯Çϱ⠶§¹®¿¡, Äõ¸®´Â ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù.
SELECT CAST(2 AS double precision) ^ CAST(3 AS double precision) AS "exp";
Example 10-2. ¹®ÀÚ¿ ¿¬°á ¿¬»êÀÚ ÇüÅÂÀÇ ÇØ°á
¹®ÀÚ¿ À¯»ç ±¸¹®Àº, ¹®ÀÚ¿ÀÇ ÀÛ¾÷ÀÇ ¿Ü, º¹ÀâÇÑ È®ÀåÇüÅÂÀÇ ÀÛ¾÷¿¡µµ »ç¿ëµË´Ï´Ù. ÇüÅÂÀÇ ÁöÁ¤ÀÌ ¾ø´Â ¹®ÀÚ¿Àº, À¯»ç ¿¬»êÀÚ Èĺ¸¿Í ÀÏÄ¡ÇÕ´Ï´Ù.
ÇѰ¡Áö ¿¹·Î¼, ÀÌÇÏ¿¡ ÁöÁ¤µÇÁö ¾ÊÀº ÀÎÀÚ°¡ 1°³ ÀÖ½À´Ï´Ù.
SELECT text 'abc' || 'def' AS "text and unknown"; text and unknown ------------------ abcdef (1 row)
ÀÌ °æ¿ì, ÆÄ¼´Â µÎ ÀÎÀÚ·Îtext¸¦ ÃëÇÏ´Â ¿¬»êÀÚÀÇ À¯¹«¸¦ °Ë»öÇÕ´Ï´Ù. ÀÌ ¿¬»êÀÚ´Â Á¸ÀçÇϱ⠶§¹®¿¡, Á¦2 ÀÎÀÚ´ÂtextÇüÅ·μ ÇØ¼®ÇÑ´Ù°í °¡Á¤ÇÕ´Ï´Ù.
ÀÌÇÏ´Â ÇüÅÂÀÇ ÁöÁ¤ÀÌ ¾ø´Â ¿¬°áÀÔ´Ï´Ù.
SELECT 'abc' || 'def' AS "unspecified"; unspecified ------------- abcdef (1 row)
ÀÌ °æ¿ì, Äõ¸®³»¿¡ ÇüŰ¡ ÁöÁ¤µÇ°í ÀÖÁö ¾ÊÀ¸¹Ç·Î, ¾î´À ÇüŸ¦ »ç¿ëÇØ¾ßÇÒ °ÍÀΰ¡¿¡ ´ëÇÑ ÃʱâÀÇ ÁöħÀÌ ¾ø½À´Ï´Ù. ±×·¯¹Ç·Î, ÆÄ¼´Â ¸ðµç ¿¬»êÀÚ È常¦ °Ë»öÇØ, ¹®ÀÚ¿ ¸ñ·Ï°ú ºñÆ®¿¸ñ·Ï ÀÔ·ÂÀ» ¹Þ¾ÆµéÀÌ´Â È常¦ ã¾Æ³À´Ï´Ù. »ç¿ëÇÒ ¼ö ÀÖ´Â °æ¿ì´Â ¹®ÀÚ¿ ¸ñ·ÏÀÌ ¿ì¼±µÇ±â ¶§¹®¿¡, ¹®ÀÚ¿ ¸ñ·ÏÀÌ ¼±ÅÃµÇ¾î ±× ¹Ù¶÷Á÷ÇÑ ÇüÅÂÀÎtext°¡, À̸§ÀÌ ¾ø´Â ¹®ÀÚ»ó¼ö¸¦ ÇØ°áÇÏ´Â ÇüÅ·μ »ç¿ëµË´Ï´Ù.
Example 10-3. Àý´ëÄ¡¿Í ºÎÁ¤ ¿¬»êÀÚÀÇ ÇüÅÂ ÇØ°á
PostgreSQLÀÇ ¿¬»êÀÚ Ä«Å»·Î±×¿¡´Â, ÀüÄ¡¿¬»êÀÚ@¿ëÀ¸·Î º¹¼öÀÇ Ç׸ñÀÌ ÀÖ½À´Ï´Ù. À̰ÍÀº ¸ðµÎ °¢Á¾ ¼öÄ¡ µ¥ÀÌÅÍÇüÅ¿¡ ´ëÇÑ Àý´ëÄ¡ °è»êÀ» ½ÇÇàÇÏ´Â °ÍÀÔ´Ï´Ù. ±× Çϳª´Â, ¼öÄ¡ ¸ñ·ÏÀÇ ¹Ù¶÷Á÷ÇÑ ÇüÅÂÀÎfloat8 Ç׸ñÀÔ´Ï´Ù. µû¶ó¼,PostgreSQL´Â, ¹«¼öÄ¡ ÀÔ·ÂÀÌ ÀÖ¾úÀ» °æ¿ì¿¡ À̰ÍÀ» »ç¿ëÇÕ´Ï´Ù.
SELECT @ '-4.5' AS "abs"; abs ----- 4.5 (1 row)
¿©±â¼ ½Ã½ºÅÛÀº, ¼±ÅÃÇÑ ¿¬»êÀÚ¸¦ Àû¿ëÇϱâ Àü¿¡, text¿¡¼ float8·Î ÇÔÃàÀû º¯È¯À» ¼öÇàÇÕ´Ï´Ù. ÀÌÇÏ¿Í °°ÀÌfloat8°¡ »ç¿ëµÇ¾î ´Ù¸¥ ÇüŰ¡ »ç¿ëµÇ¾î ÀÖÁö ¾ÊÀº °ÍÀ» °ËÁõÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
SELECT @ '-4.5e500' AS "abs"; ERROR: "-4.5e500" is out of range for type double precision
ÇÑÆí, ÀüÄ¡¿¬»êÀÚ~(ºñÆ® ºÎÁ¤)´Â, Á¤¼ö µ¥ÀÌÅÍÇüŸ¸À¸·Î Á¤ÀǵǾîfloat8¿ëÀº Á¤Àǵǰí ÀÖÁö ¾Ê½À´Ï´Ù. ±×·¯¹Ç·Î,~¿¡ ÀÖ¾î¼ÀÇ À§¿Í °°Àº °æ¿ì¿¡¼´Â, ÀÌÇÏ¿Í °°Àº °á°ú°¡ µË´Ï´Ù.
SELECT ~ '20' AS "negation"; ERROR: operator is not unique: ~ "unknown" HINT: Could not choose a best candidate operator. You may need to add explicit type casts.
À̰ÍÀº, ½Ã½ºÅÛÀÌ º¹¼öÀÇ~¿¬»êÀÚ Èĺ¸Áß ¾î¶² °ÍÀÌ ¹Ù¶÷Á÷ÇѰ¡¸¦ °áÁ¤ÇÒ ¼ö°¡ ¾ø¾ú±â ¶§¹®¿¡ ¹ß»ýÇÕ´Ï´Ù. ¸í½ÃÀûÀΠij½ºÆ®¸¦ »ç¿ëÇÏ´Â °ÍÀ¸·Î µµ¿òÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù.
SELECT ~ CAST('20' AS int8) AS "negation";
negation
----------
-21
(1 row)