4.2. Æò°¡½Ä

Æò°¡½ÄÀº, ¿¹¸¦ µé¸é SELECT¸í·ÉÀÇ ¸ñÀû ¸®½ºÆ®·Î¼­ INSERT³ª UPDATEÀÇ »õ·Î¿î ¿­ÀÇ °ªÀ¸·Î¼­ ȤÀº ¸î°³ÀÇ ¸í·ÉÀÇ °Ë»ö Á¶°ÇÀ¸·Î¼­ ¿©·¯°¡Áö ¹®¸Æ Áß ¿¡¼­ »ç¿ëµË´Ï´Ù. Æò°¡½ÄÀÇ °á°ú´Â, Å×À̺í½ÄÀÇ °á°ú(Áï Å×À̺í)·ÎºÎÅÍ ±¸º°Çϱâ À§Çؼ­, ½ºÄ®¶ó·Î ºÒ¸®´Â Àϵµ ÀÖ½À´Ï´Ù. µû¶ó¼­, Æò°¡½ÄÀº ½ºÄ®¶ó½Ä(¶Ç´Â Á» ´õ °£´ÜÇÏ°Ô ½Ä)À̶ó°íµµ ºÒ¸³´Ï´Ù. ½ÄÀÇ ±¸¹®¿¡ ÀÇÇØ, »ê¼ú, ³í¸®, ÁýÇÕµîÀÇ ¿¬»êÀ» ½Ç½ÃÇÏ´Â ±âº»ÀûÀÎ ºÎºÐ¿¡¼­ °ªÀÇ °è»êÀ» ½Ç½ÃÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

Æò°¡½ÄÀº ¾Æ·¡ÀÇ ¿¹ Áß ÇϳªÀÔ´Ï´Ù.

À̿ܿ¡µµ, ½ÄÀ¸·Î¼­ ºÐ·ùµÇÁö¸¸ ÀϹÝÀûÀÎ ±¸¹® ±Ô¾àÀº µû¸£Áö ¾Ê´Â, ¸î °³ÀÇ ±¸¼ºÃ¼°¡ ÀÖ½À´Ï´Ù. À̰͵éÀº ÀϹÝÀûÀ¸·Î ÇÔ¼ö ȤÀº ¿¬»êÀÚÀÇ Àǹ̸¦ °¡Áý´Ï´Ù. Chapter 9ÀÇ ÇØ´ç ºÎºÐ¿¡¼­ ¼³¸íµÇ°í ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é IS NULL±¸°¡ ÀÖ½À´Ï´Ù.

Section 4.1.2±×¸®°í ÀÌ¹Ì Á¤¼ö¿¡ ´ëÇØ¼­´Â ¼³¸íÇß½À´Ï´Ù. °è¼ÓµÇ´Â ¼½¼Ç¿¡¼­´Â ³ª¸ÓÁöÀÇ ¿É¼Ç¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.

4.2.1. ¿­ÀÇ ÂüÁ¶

¿­Àº, ¾Æ·¡¿Í °°Àº Çü½Ä¿¡¼­ ÂüÁ¶ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.


correlation
.
columnname

correlation ´Â, Å×À̺í¸í(½ºÅ°¸¶·Î ¼ö½ÄµÇ°í ÀÖ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù), FROM±¸·Î Á¤ÀÇµÈ Å×À̺íÀÇ º°¸í, ȤÀº NEW ¶Ç´Â OLD¶ó´Â Ű¿öµåÀÔ´Ï´Ù (NEW¿Í OLD´Â ÀçÀÛ¼º ·ê·Î ¹Û¿¡ »ç¿ëµË´Ï´Ù¸¸, ´Ù¸¥ »ó°ü¸íÀº ¸ðµç SQL¹®À¸·Î »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù). »ó°ü¸íÀ¸·Î ´Ü¶ôÁö¾î ¿ë¹«ÀÇ µµÆ®´Â, ¸¸¾à ·Ä¸íÀÌ ÇöÀçÀÇ Äõ¸®·Î »ç¿ëµÇ´Â ¸ðµç Å×ÀÌºí¿¡¼­ À¯ÀÏÇÑ °æ¿ì´Â »ý·« ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. (Chapter 7µµ ÂüÁ¶ÇØ ÁÖ¼¼¿ä).

4.2.2. À§Ä¡ ¸Å°³º¯¼ö

À§Ä¡ ¸Å°³º¯¼ö ÂüÁ¶´Â, ¿ÜºÎ·ÎºÎÅÍ SQL¹®¿¡°Ô °Ç³×Áö´Â °ªÀ» ³ªÅ¸³»±â À§Çؼ­ »ç¿ëµË´Ï´Ù. ¸Å°³º¯¼ö´Â SQL ÇÔ¼ö Á¤ÀÇ ¹× ÁغñµÈ Äõ¸® Áß ¿¡¼­ »ç¿ëµË´Ï´Ù. ¶Ç, Ŭ¶óÀÌ¾ðÆ® ¶óÀ̺귯¸®¾È¿¡´Â, SQL ¸í·É ¹®ÀÚ¿­°ú µ¥ÀÌÅͰªÀ» ºÐ¸®ÇØ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» Áö¿øÇÏ´Â °Íµµ ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì, ¸Å°³º¯¼ö´Â Çà¿Ü µ¥ÀÌÅͰªÀ» ÂüÁ¶Çϱâ À§Çؼ­ »ç¿ëµË´Ï´Ù. ¸Å°³º¯¼ö ÂüÁ¶ÀÇ Çü½ÄÀº ÀÌÇÏ¿Í °°½À´Ï´Ù.

$
number

¿¹¸¦ µé¸é, ÇÔ¼ö dept ÀÇ Á¤Àǰ¡ ÀÌÇÏ¿Í °°ÀÌ µÇ¾ú´Ù°í ÇÕ´Ï´Ù.

CREATE FUNCTION dept(text) RETURNS dept
    AS $$ SELECT * FROM dept WHERE name = $1 $$
    LANGUAGE SQL;

¿©±â¼­ $1´Â ÇÔ¼ö°¡ ºÒ·Á °¥ ¶§¿¡ ÃÖÃÊÀÇ ÇÔ¼ö ÀÎÀÚÀÇ °ªÀ» ÂüÁ¶ÇÕ´Ï´Ù.

4.2.3. ÷ÀÚ

¹è¿­ÀÇ °ªÀ» ÁÖ´Â ½ÄÀÇ °æ¿ì, ƯÁ¤ÀÇ ¹è¿­ ¿ä¼ÒÀÇ °ªÀº ÀÌÇÏ¿Í °°ÀÌ ±â¼úÇÏ´Â °ÍÀ¸·Î Àü°³µË´Ï´Ù.


expression
[
subscript
]

¶Ç, º¹¼öÀÇ ¿ä¼Ò¸¦ °ÉÄ¡´Â("¹è¿­ÀÇ ÀϺκÐ") °æ¿ì´Â ÀÌÇÏ¿Í °°ÀÌ ±â¼úÇÏ´Â °ÍÀ¸·Î Àü°³µË´Ï´Ù.


expression
[
lower_subscript
:
upper_subscript
]

(¿©±â¼­ ´ë°ýÈ£[ ]´Â ¸®ÅÍ·²·Î¼­ ³ªÅ¸³ª°í ÀÖ½À´Ï´Ù.) °¢ subscript ´Â ÀÚ½ÅÀÌ ½ÄÀ̸ç, Á¤¼ö°ªÀ» »ý¼ºÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.

ÀϹÝÀûÀ¸·Î´Â, ¹è¿­ expression Àº °ýȣǥ½Ã°¡ ¾øÀ¸¸é ¾ÈµË´Ï´Ù, ÷ÀÚ°¡ ºÙÀº ½ÄÀÌ ´Ü¼øÇÑ ¿­ÂüÁ¶³ª À§Ä¡ ¸Å°³º¯¼ö¿´À» °æ¿ì, ±× °ýÈ£¸¦ »ý·« ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.

mytable.arraycolumn[4]
mytable.two_d_column[17][34]
$1[10:42]
(arrayfunction(a,b))[42]

¸¶Áö¸· ¿¹¿¡¼­´Â °ýÈ£°¡ ÇÊ¿äÇÕ´Ï´Ù. ¹è¿­ÀÇ ÀÚ¼¼ÇÑ °ÍÀº Section 8.10À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

4.2.4. ÇÊµå ¼±ÅÃ

½ÄÀÌ º¹ÇÕÇü(ÇàÇü)ÀÇ °ªÀ» »ý¼ºÇÏ´Â °æ¿ì, ÇàÀÇ Æ¯Á¤ÀÇ Çʵå´Â ÀÌÇÏ¿Í °°ÀÌ ±â¼úÇÏ´Â °ÍÀ¸·Î Àü°³ÇÒ ¼ö ÀÖ½À´Ï´Ù.


expression
.
fieldname

ÀϹÝÀûÀ¸·Î´Â, Çà expression Àº °ýȣǥ½Ã°¡ ¾øÀ¸¸é ¾ÈµË´Ï´Ù. ±×·¯³ª, ¼±ÅÿøÀÌ µÇ´Â ½ÄÀÌ ´Ü¼øÇÑ Å×À̺í ÂüÁ¶³ª À§Ä¡ ¸Å°³º¯¼öÀÇ °æ¿ì, °ýÈ£¸¦ »ý·« ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.

mytable.mycolumn
$1.somecolumn
(rowfunction(a,b)).col3

(µû¶ó, ¼ö½ÄµÈ ¿­ÂüÁ¶´Â ½ÇÁ¦·Î ´Ü¼øÇÑ ÇÊµå ¼±Åà ±¸¹®ÀÇ Æ¯¼öÇÑ °æ¿ìÀÔ´Ï´Ù. )

4.2.5. ¿¬»êÀÚÀÇ È£Ãâ

¿¬»êÀÚÀÇ È£Ãâ¿¡´Â ÀÌÇÏÀÇ 3 ±¸¹®ÀÌ °¡´ÉÇÕ´Ï´Ù.

expression operator expression (2Ç×ÁßÄ¡¿¬»êÀÚ)
operator expression (´ÜÇ×ÀüÄ¡¿¬»êÀÚ)
expression operator (´ÜÇ×ÈÄÄ¡¿¬»êÀÚ)

¿©±â¼­ operator ÅäÅ«Àº, Section 4.1.3±¸¹® ±ÔÄ¢¿¡ µû¸£´Â °Í, ȤÀº Ű¿öµåAND, OR, NOTÀÇ ¾ðÁ¨°¡, ¶Ç´Â ÀÌÇÏÀÇ Çü½ÄÀÇ ¼ö½ÄµÈ ¿¬»êÀÚ¸íÀÔ´Ï´Ù.

OPERATOR(

schema

.

operatorname

)

±¸Ã¼ÀûÀ¸·Î ¾î¶² ¿¬»êÀÚ°¡ Á¸ÀçÇØ, ±×°ÍÀÌ ´ÜÇ×À̳ª 2Ç×È­Àΰ¡´Â, ½Ã½ºÅÛÀ̳ª »ç¿ëÀÚ¿¡ ÀÇÇØ ¾î¶² ¿¬»êÀÚ°¡ Á¤ÀǵǾú´ÂÁö¸¦ ÀÇÁ¸ÇÕ´Ï´Ù. Chapter 9¿¡¼­, ÆíÀÔ ¿¬»êÀÚ¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.

4.2.6. ÇÔ¼ö È£Ãâ

ÇÔ¼ö È£ÃâÀÇ ±¸¹®Àº, ÇÔ¼ö¸í(½ºÅ°¸¶¸íÀ¸·Î ¼ö½ÄµÇ°í ÀÖ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù)¿¡ ÀÌ¾î ±× ÀÎÀÚ¸¦ °ýÈ£·Î µÑ·¯½Î ¿­°ÅÇÑ °ÍÀÔ´Ï´Ù.


function
 ([

expression
 [, 
expression
 ... ]] )

¿¹¸¦ µé¸é, ÀÌÇÏÀÇ °ÍÀº 2ÀÇ Á¦°ö±ÙÀ» °è»êÇÕ´Ï´Ù.

sqrt(2)

ÆíÀÔ ÇÔ¼öÀÇ À϶÷Àº Chapter 9¿¡ ÀÖ½À´Ï´Ù. ´Ù¸¥ ÇÔ¼ö´Â »ç¿ëÀÚ°¡ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.

4.2.7. Áý°è½Ä

Áý°è½ÄÀº, Äõ¸®¿¡ ÀÇÇØ ¼±ÅõǴ Çà¿¡ ´ëÇØ¼­ Áý°è ÇÔ¼ö°¡ Àû¿ëµÇ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. Áý°è ÇÔ¼ö´Â, ¿¹¸¦ µé¸é ÀÔ·ÂÀÇ Çհ質 Æò±Õ µî°ú °°ÀÌ, º¹¼öÀÇ ÀÔ·ÂÀ» ´ÜÀÏÀÇ Ãâ·Â°ªÀ¸·Î ÇÕ´Ï´Ù. Áý°è½ÄÀÇ ±¸¹®Àº ´ÙÀ½ÀÇ °Íµé Áß ÇϳªÀÔ´Ï´Ù.


aggregate_name
 (
expression
 [ , ... ] )

aggregate_name
 (ALL 
expression
 [ , ... ] )

aggregate_name
 (DISTINCT 
expression
 [ , ... ] )

aggregate_name
 ( * )

¿©±â¼­, aggregate_name ´Â »çÀü¿¡ Á¤ÀÇµÈ Áý°è(½ºÅ°¸¶¸íÀ¸·Î ¼ö½ÄµÇ¾úÀ» °æ¿ìµµ ÀÖ½À´Ï´Ù)·Î, expression ÀÚü´Â Áý°è½ÄÀ» Æ÷ÇÔÇÏÁö ¾Ê´Â Æò°¡½ÄÀÔ´Ï´Ù.

Áý°è½ÄÀÇ ÃÖÃÊÀÇ ±¸¹®Àº, ÁöÁ¤µÈ ½ÄÀÌ ºñNULL°ªÀ» µ¹·ÁÁÖ´Â ÀÔ·ÂÇà ¸ðµÎ¿¡ ´ëÇÑ Áý°è¸¦ È£ÃâÇÕ´Ï´Ù (½ÇÁ¦·Î´Â NULL°ªÀ» ¹«½ÃÇÒÁö ¾î¶³Áö´Â Áý°è ÇÔ¼ö¿¡ µû¶ó¼­ ´Ù¸¨´Ï´Ù¸¸, ¸ðµç Ç¥ÁØÀûÀÎ Áý°è ÇÔ¼ö¿¡¼­´Â ¹«½ÃÇÕ´Ï´Ù). ALL´Â ±âº»°ªÀ̹ǷÎ, 2¹øÂ°ÀÇ Çü½ÄÀº ÃÖÃÊÀÇ Çü½Ä°ú °°½À´Ï´Ù. 3¹øÂ°ÀÇ Çü½ÄÀº, ÀÔ·ÂÇà¾È¿¡ ÀÖ´Â ½ÄÀÇ, ¸ðµç Áߺ¹ ÇÏÁö ¾Ê´Â, ºñNULL°ªÀÇ Áý°è¸¦ È£ÃâÇÕ´Ï´Ù. ¸¶Áö¸· Çü½ÄÀº NULL°ªÀ̳ª ºñNULL°ªÀΰ¡¿¡ °ü°è¾øÀÌ, °¢°¢ÀÇ ÀÔ·ÂÇà¿¡ ´ëÇØ¼­ 1ȸ¾¿ Áý°è¸¦ È£ÃâÇÕ´Ï´Ù. ±¸Ã¼ÀûÀÎ ÀԷ°ªÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾Ê±â ¶§¹®¿¡, À̰ÍÀº ÀϹÝÀûÀ¸·Î count(*)Áý°è ÇÔ¼ö¿¡¼­¸¸ µµ¿òÀÌ µË´Ï´Ù.

¿¹¸¦ µé¸é, count(*)´Â ÀÔ·ÂÇàÀÇ ÇÕ°è¼ö¸¦ ¿ä±¸ÇÕ´Ï´Ù. count(f1)´Â f1°¡ ºñNULLÀÎ ÀÔ·ÂÇàÀÇ ¼ö¸¦ ¿ä±¸ÇÕ´Ï´Ù. count(distinct f1)´Â f1ÀÇ Áߺ¹ ÇÏÁö ¾Ê´Â ºñNULL°ªÀÇ ¼ö¸¦ ¿ä±¸ÇÕ´Ï´Ù.

Á¤ÀÇ ³¡³­ Áý°è ÇÔ¼ö´Â Section 9.15À¸·Î ¼³¸íµÇ°í ÀÖ½À´Ï´Ù. »ç¿ëÀÚ´Â ´Ù¸¥ Áý°è ÇÔ¼ö¸¦ Ãß°¡ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

Áý°è½ÄÀº, SELECT¸í·ÉÀÇ °á°ú ¸®½ºÆ® ȤÀº HAVING±¸³»¿¡¼­¸¸ ±â¼úÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. WHEREµîÀÇ ´Ù¸¥ ±¸¿¡¼­´Â ¿ë¼­µÇÁö ¾Ê½À´Ï´Ù. ÀÌ·¯ÇÑ ±¸´Â À̷лó Áý°è °á°ú°¡ Çü¼ºµÇ±â Àü¿¡ Æò°¡µÇ±â ¶§¹®ÀÔ´Ï´Ù.

Áý°è½ÄÀÌ ¼­ºêÄõ¸®(Section 4.2.9¿Í Section 9.16¸¦ ÂüÁ¶) µ¿¾È¿¡ ³ªÅ¸³µÀ» °æ¿ì, Åë»ó Áý°èÀº ¼­ºêÄõ¸®ÀÇ Çà Àüü¿¡ ´ëÇØ¼­ Æò°¡ÇÕ´Ï´Ù. ±×·¯³ª, ±× Áý°èÀÇ ÀÎÀÚ°¡ »óÀ§ ·¹º§ÀÇ º¯¼ö¸¸À» °¡Áö´Â °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù. ±× °æ¿ì, »óÀ§ Äõ¸®ÀÇ Çà Àüü¿¡ ´ëÇØ¼­ Æò°¡ÇÕ´Ï´Ù. ÀüüÀûÀ¸·Î, ±× Áý°è½ÄÀº, ±× ÈÄ, ±× Áý°è¸¦ Æ÷ÇÔÇÑ ºÎ¹®ÀÇ¿¡¼­´Â ¿ÜºÎ ÂüÁ¶°¡ µÇ¾î, ±× ¼­ºêÄõ¸®¿¡ À־ÀÇ Æò°¡¿¡ ´ëÇØ¼­´Â Á¤¼ö·Î¼­ µ¿ÀÛÇÕ´Ï´Ù. °á°ú ¸®½ºÆ® ȤÀº HAVING±¸¿¡°Ô¸¸ ³ªÅ¸³ª´Â Á¦¾àÀº, ±× Áý°è°¡ ¼ÓÇÏ´Â Äõ¸® ·¹º§¿¡ °ü·ÃÇØ Àû¿ëµË´Ï´Ù.

Note: ÇöÀç PostgreSQL´Â, 1°³ ÀÌ»óÀÇ ÀԷ½ÄÀ» °¡Áö´Â DISTINCT¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.

4.2.8. ÇüÅ ij½ºÆ®

ÇüÅ ij½ºÆ®´Â, ¾î´À µ¥ÀÌÅÍÇüÀ¸·ÎºÎÅÍ ´Ù¸¥ µ¥ÀÌÅÍÇü¿¡ÀÇ º¯È¯À» ÁöÁ¤ÇÕ´Ï´Ù. PostgreSQL´Â ÇüÅ ij½ºÆ®¿¡°Ô 2°³ÀÇ µî°¡ÀÎ ±¸¹®À» ¹Þ¾ÆµéÀÔ´Ï´Ù.

CAST ( 
expression
 AS 
type
 )

expression
::
type

CAST±¸¹®Àº SQL¿¡ ÁذÅÇÑ °ÍÀÔ´Ï´Ù. ::¸¦ »ç¿ëÇÏ´Â ±¸¹®Àº, PostgreSQL·Î ÀüÅëÀûÀ¸·Î »ç¿ëµÇ°í ÀÖ´Â ¹æ¹ýÀÔ´Ï´Ù.

ij½ºÆ®°¡ ±âÁ¸ÀÇ ÇüÅÂÀÇ Æò°¡½Ä¿¡ Àû¿ëµÇ¾úÀ» °æ¿ì, ±×°ÍÀº ½ÇÇà½Ã Çü º¯È¯À» ³ªÅ¸³À´Ï´Ù. ÀÌ Ä³½ºÆ®´Â, ÀûÀýÇÑ ÇüÅ º¯È¯ Á¶ÀÛÀÌ Á¤Àǵǰí ÀÖ´Â °æ¿ì¸¸ ¼º°øÇÕ´Ï´Ù. Section 4.1.2.5¿¡¼­ º¸¿©Áø°Í ó·³, À̰Ͱú Á¤¼öÀÇ Ä³½ºÆ®ÀÇ »ç¿ë°úÀÇ ¹Ì¹¦ÇÑ Â÷ÀÌ¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. ¼ö½ÄµÇ¾î ÀÖÁö ¾ÊÀº ¹®ÀÚ¿­ ¸®ÅÍ·²¿¡ ´ëÇÑ Ä³½ºÆ®´Â, ¸®ÅÍ·² Á¤¼ö°ªÀÇ Ãʱ⿡ ÇÒ´çÇÒ ¼ö ÀÖ´Â ÇüŸ¦ ³ªÅ¸³À´Ï´Ù. ±×·¯´Ï±î, À̰ÍÀº(¹®ÀÚ¿­ ¸®ÅÍ·² Á¤¼öÀÇ ³»¿ëÀÌ ±× µ¥ÀÌÅÍÇüÀÇ ÀÔ·Â ±¸¹®À¸·Î ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Ù¸é) ¸ðµç ÇüÅ·Π¼º°øÇÕ´Ï´Ù.

Åë»ó(¿¹¸¦ µé¸é Å×ÀÌºí¿­¿¡ÀÇ ´ëÀԽà µî), Æò°¡½ÄÀÌ »ý¼ºÇØ¾ß ÇÏ´Â ÇüÅ¿¡ ¾Ö¸ÅÇÔÀÌ ¾ø´Â °æ¿ì, ¸í½ÃÀûÀÎ ÇüÅ ij½ºÆ®´Â »ý·« ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ±× °æ¿ì, ½Ã½ºÅÛÀº ÀÚµ¿ÀûÀ¸·Î ÇüÅ ij½ºÆ®¸¦ Àû¿ëÇÕ´Ï´Ù. ±×·¯³ª, ÀÚµ¿ ij½ºÆ®´Â, ½Ã½ºÅÛ ¸ñ·Ï¿¡ "¾Ï¹¬ÀûÀ¸·Î Àû¿ëÇØµµ ¹®Á¦ ¾øÀ½"À» ³ªÅ¸³ª°í ÀÖ´Â °æ¿ì¿¡°Ô¸¸ ½ÇÇàµË´Ï´Ù. ±× ¿ÜÀÇ Ä³½ºÆ®´Â ¸í½ÃÀûÀΠij½ºÆ® ±¸¹®À¸·Î È£ÃâÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ Á¦ÇÑÀº, ¸ð¸£´Â µ¿¾È¿¡ º¯È¯ÀÌ ½ÇÇàµÇ¾î ¹ö¸®´Â °ÍÀ» ¸·±â À§ÇÑ °ÍÀÔ´Ï´Ù.

¶Ç, ÇÔ¼ö¿Í °°Àº ±¸¹®À» »ç¿ëÇØ ÇüÅ ij½ºÆ®¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.


typename
 ( 
expression
 )

However, this only works for types whose names are also valid as function names. For example, double precision can't be used this way, but the equivalent float8 can. Also, the names interval, time, and timestamp can only be used in this fashion if they are double-quoted, because of syntactic conflicts. Therefore, the use of the function-like cast syntax leads to inconsistencies and should probably be avoided in new applications. (The function-like syntax is in fact just a function call. When one of the two standard cast syntaxes is used to do a run-time conversion, it will internally invoke a registered function to perform the conversion. By convention, these conversion functions have the same name as their output type, and thus the "function-like syntax" is nothing more than a direct invocation of the underlying conversion function. Obviously, this is not something that a portable application should rely on.) --> ±×·¯³ª, À̰ÍÀº ±× ÇüÅÂÀÇ À̸§ÀÌ ÇÔ¼öÀÇ À̸§À¸·Î¼­µµ À¯È¿ÇÑ °æ¿ì¿¡°Ô¸¸ µ¿ÀÛÇÕ´Ï´Ù. ¿¹¸¦ µé¸é, double precision ´Â ÀÌ ¹æ½Ä¿¡¼­ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù¸¸, µ¿µîÀÇ float8´Â »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶Ç, interval, time, timestamp¶ó´Â À̸§Àº, ±¸¹®ÀÌ Ãæµ¹Çϱ⠶§¹®¿¡, ÀÌÁß ÀοëºÎÈ£·Î Ç¥½ÃÇÑ °æ¿ì¿¡¸¸ ÀÌ ¹æ½ÄÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ¿Í °°ÀÌ, ÀÌ ÇÔ¼ö¿Í °°Àº ij½ºÆ® ±¸¹®Àº Àϰü¼ºÀÌ ¾ø¾îÁö±â ½¬¿ì¹Ç·Î, ¾î¼¸é »õ·Î¿î ¾îÇø®ÄÉÀ̼ǿ¡¼­´Â »ç¿ëÀ» ÇÇÇØ¾ß ÇÕ´Ï´Ù. (ÀÌ ÇÔ¼ö¿Í °°Àº ±¸¹®Àº, ½ÇÁ¦·Î´Â ´Ü¼øÇÑ ÇÔ¼ö È£ÃâÀÔ´Ï´Ù. 2°³ÀÇ Ç¥ÁØÀûÀΠij½ºÆ® ±¸¹® °¡¿îµ¥ Çϳª°¡ ½ÇÇà½Ã º¯È¯À¸·Î »ç¿ëµÇ¸é, ÀÌ ±¸¹®Àº µî·ÏÀ» ¸¶Ä£ ÇÔ¼ö¸¦ ³»ºÎÀûÀ¸·Î È£ÃâÇØ º¯È¯À» ½ÇÇàÇÕ´Ï´Ù. °ü½ÀÀûÀ¸·Î, ÀÌ·¯ÇÑ º¯È¯ ÇÔ¼ö´Â ÀÚ½ÅÀÇ Ãâ·ÂÇü°ú °°Àº À̸§À» °¡Á®, À̰Ϳ¡ ÀÇÇØ, "ÇÔ¼ö¿Í °°Àº ±¸¹®"Àº ¹èÈÄ¿¡ ÀÖ´Â º¯È¯¿ë ÇÔ¼ö¸¦ Á÷Á¢ È£ÃâÇÏ´Â, ±× ÀÌ»óÀ» ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù. À̽ļºÀ» °¡Áö´Â ¾îÇø®ÄÉÀ̼ÇÀÌ ÀÇÁ¸ÇؾßÇÒ °Í ³ª¿ÀÁö ¾Ê´Â °ÍÀº ¸íÈ®ÇÕ´Ï´Ù.)

4.2.9. ½ºÄ®¶ó ¼­ºêÄõ¸®

½ºÄ®¶ó¼­ºêÄõ¸®´Â, Á¤È®ÇÏ°Ô 1Çà 1¿­À» µ¹·ÁÁÖ´Â, °ýÈ£³»ÀÇ Åë»óÀÇ SELECTÄõ¸®ÀÔ´Ï´Ù (Äõ¸®ÀÇ ±â¼ú ¹æ¹ý¿¡ ´ëÇØ¼­´Â Chapter 7À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä). ±×SELECTÄõ¸®´Â ½ÇÇàµÇ¾î µ¹·ÁÁÖ¾îÁö´Â ´ÜÀÏÀÇ °ªÀº, ±× °ªÀÇ ÀüÈÄÀÇ Æò°¡½Ä¿¡¼­ »ç¿ëµË´Ï´Ù. 1ÇàÀ» ³Ñ´Â ÇàÀ̳ª 1¿­À» ³Ñ´Â ¿­ÀÌ ½ºÄ®¶ó¼­ºêÄõ¸®¿ëÀÇ Äõ¸®·Î¼­ »ç¿ëµÇ¾úÀ» °æ¿ì´Â ¿¡·¯°¡ µË´Ï´Ù (±×·¯³ª, ¾î´À ½ÇÇà½Ã¿¡, ¼­ºêÄõ¸®°¡ ÇàÀ» µ¹·ÁÁÖÁö ¾Ê´Â °æ¿ì´Â ¿¡·¯´Â µÇÁö ¾Ê½À´Ï´Ù. ±× ½ºÄ®¶ó °á°ú´Â NULL·Î¼­ ´Ù·ç¾îÁý´Ï´Ù). ¼­ºêÄõ¸®´Â, ±× ÁÖÀ§ÀÇ Äõ¸®³»ÀÇ °ªÀ» ÂüÁ¶ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ±× °ªÀº ¼­ºêÄõ¸®ÀÇ Æò°¡½Ã¿¡´Â Á¤¼ö·Î¼­ ´Ù·ç¾îÁý´Ï´Ù. ¼­ºêÄõ¸®¿¡ °üÇÑ ´Ù¸¥ ½Ä¿¡ ´ëÇØ¼­´Â Section 9.16µµ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

¿¹¸¦ µé¸é, ÀÌÇÏ´Â °¢ÁÖ¿¡¼­ °¡Àå Àα¸°¡ ¸¹Àº µµ½Ã¸¦ °Ë»öÇÕ´Ï´Ù.

SELECT name, (SELECT max(pop) FROM cities WHERE cities.state = states.name)
    FROM states;

4.2.10. ¹è¿­ »ý¼ºÀÚ

¹è¿­ »ý¼ºÀÚ´Â, °¢ ¿ä¼Ò¿ëÀÇ °ªÀ¸·ÎºÎÅÍ ¹è¿­°ªÀ» ±¸ÃàÇÏ´Â ½ÄÀÔ´Ï´Ù. ´Ü¼øÇÑ ¹è¿­ »ý¼ºÀÚÀÇ ±¸¼ºÀº, ARRAYŰ¿öµå, ¿ÞÂÊ´ë°ýÈ£[, (Äĸ¶·Î ´Ü¶ôÁöÀº) ¹è¿­ ¿ä¼ÒÄ¡¿ëÀÇ Çϳª ÀÌ»óÀÇ ½Ä, ¸¶Áö¸·¿¡ ¿À¸¥ÂÊ´ë°ýÈ£]ÀÔ´Ï´Ù. ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.

SELECT ARRAY[1,2,3+4];
  array
---------
 {1,2,7}
(1 row)

¹è¿­ ¿ä¼ÒÇüÀº, ¸â¹ö½ÄÀÇ ÇüÅÂ¿Í °°¾Æ, UNION³ª CASE±¸¹®°ú °°Àº ±ÔÄ¢À» »ç¿ëÇØ °áÁ¤µË´Ï´Ù (Section 10.5¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä).

´ÙÂ÷¿ø ¹è¿­Ä¡´Â, ¹è¿­ »ý¼ºÀÚ¸¦ »óÀÚ·Î ÇÏ´Â °ÍÀ¸·Î ±¸ÃàÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾ÈÂÊÀÇ »ý¼ºÀÚ¿¡¼­ ARRAYŰ¿öµå´Â »ý·« °¡´ÉÇÕ´Ï´Ù. ¿¹¸¦ µé¸é, ÀÌÇÏ´Â °°Àº °á°ú°¡ µË´Ï´Ù.

SELECT ARRAY[ARRAY[1,2], ARRAY[3,4]];
     array
---------------
 {{1,2},{3,4}}
(1 row)

SELECT ARRAY[[1,2],[3,4]];
     array
---------------
 {{1,2},{3,4}}
(1 row)

´ÙÂ÷¿ø ¹è¿­Àº »ç°¢Çü ¹è¿­ÀÌ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù, µ¿ÀÏ ·¹º§ÀÇ ³»ºÎ»ý¼ºÀÚ´Â µ¿ÀÏ Â÷¿øÀÇ ºÎ¹è¿­À» »ý¼ºÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.

´ÙÂ÷¿ø ¹è¿­ »ý¼ºÀÚÀÇ ¿ä¼Ò´Â, ºÎARRAY±¸¹® »Ó¸¸ÀÌ ¾Æ´Ï¶ó, ÀûÀýÇÑ Á¾·ùÀÇ ¹è¿­À» »ý¼ºÇÏ´Â °ÍÀ» ÃëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.

CREATE TABLE arr(f1 int[], f2 int[]);

INSERT INTO arr VALUES (ARRAY[[1,2],[3,4]], ARRAY[[5,6],[7,8]]);

SELECT ARRAY[f1, f2, '{{9,10},{11,12}}'::int[]] FROM arr;
                     array
------------------------------------------------
 {{{1,2},{3,4}},{{5,6},{7,8}},{{9,10},{11,12}}}
(1 row)

¶Ç, ¼­ºêÄõ¸®ÀÇ °á°ú·ÎºÎÅÍ ¹è¿­À» ±¸¼ºÇÏ´Â Àϵµ °¡´ÉÇÕ´Ï´Ù. ÀÌ Çü½ÄÀÇ °æ¿ì, ¹è¿­»ý¼ºÀÚ´Â ARRAYŰ¿öµåÀÇ µÚ¿¡ °ýÈ£(´ë°ýÈ£´Â ¾Æ´Ï´Ù)·Î °ýȣǥ½ÃÇÑ ¼­ºêÄõ¸®·Î¼­ ±â¼úµË´Ï´Ù. ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.

SELECT ARRAY(SELECT oid FROM pg_proc WHERE proname LIKE 'bytea%');
                          ?column?
-------------------------------------------------------------
 {2011,1954,1948,1952,1951,1244,1950,2005,1949,1953,2006,31}
(1 row)

¼­ºêÄõ¸®´Â ´ÜÀÏÀÇ ¿­À» µ¹·ÁÁÖÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ±× °á°úÀÎ ÀÏÂ÷¿ø ¹è¿­Àº, ¼­ºêÄõ¸®ÀÇ Ãâ·Â¿­°ú ÀÏÄ¡ÇÏ´Â ÇüŸ¦ ¿ä¼ÒÇüÀ¸·Î ÇÑ, ¼­ºêÄõ¸®ÀÇ °á°ú ³»ÀÇ °¢ ÇàÀ» ¿ä¼Ò·Î¼­ °¡Áý´Ï´Ù.

ARRAY·Î ±¸ÃàµÈ ¹è¿­°ªÀÇ Ã·ÀÚ´Â, Ç×»ó 1À¸·ÎºÎÅÍ ½ÃÀ۵˴ϴÙ. ¹è¿­¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ °ÍÀº Section 8.10À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

4.2.11. Çà »ý¼ºÀÚ

Çà»ý¼ºÀÚ´Â, ±× ¸â¹ö ÇʵåÀÇ °ªÀ» »ç¿ëÇØ ÇàÀÇ °ª(º¹ÇÕ°ªÀ̶ó°íµµ ºÒ¸³´Ï´Ù)À» ±¸ÃàÇÏ´Â ½ÄÀÔ´Ï´Ù. Çà»ý¼ºÀÚ´Â, ROWŰ¿öµå, ¿ÞÂÊ °ýÈ£, ÇàÀÇ Çʵ尪¿ëÀÇ 0°³ ÀÌ»óÀÇ ½Ä(Äĸ¶ ´Ü¶ô), ¸¶Áö¸·¿¡ ¿À¸¥ÂÊ °ýÈ£·ÎºÎÅÍ µË´Ï´Ù. ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.

SELECT ROW(1,2.5,'this is a test');

ROWŰ¿öµå´Â, 1°³ÀÌ»óÀÇ ½ÄÀÌ ¸®½ºÆ®³»¿¡ ÀÖ´Â °æ¿ì´Â »ý·« ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

Çà»ý¼ºÀÚ¿¡´Â rowvalue . *±¸¹®À» Æ÷ÇÔÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. À̰ÍÀº, SELECT¸®½ºÆ®ÀÇ ÃÖ»óÁ¤µµ ·¹º§·Î. *±¸¹®ÀÌ »ç¿ëµÇ¾úÀ» ¶§ ¸ØÃá ±¸ °°ÀÌ Çà°ªÀÇ ¿ä¼ÒÀÇ ¿­°Å¿¡ Àü°³µË´Ï´Ù. ¿¹¸¦ µé¾î, Å×À̺ít°¡ f1¿­°ú f2¿­À» °¡Áö´Â °æ¿ì, ÀÌÇÏ´Â µ¿ÀÏÇÕ´Ï´Ù.

SELECT ROW(t.*, 42) FROM t;
SELECT ROW(t.f1, t.f2, 42) FROM t;

Note: PostgreSQL 8.2º¸´Ù Àü¿¡¼­´Â, . *±¸¹®Àº Àü°³µÇÁö ¾Ê¾Ò½À´Ï´Ù. ROW(t. *, 42)¿Í ±â¼úÇϸé, 1¹øÂ°ÀÇ Çʵ忡 ´Ù¸¥ Çà°ªÀ» °¡Áö´Â, 2°³ÀÇ Çʵå·ÎºÎÅÍ µÇ´Â ÇàÀÌ ÀÛ¼ºµÇ¾ú½À´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì, »õ·Î¿î µ¿ÀÛÀº º¸´Ù »ç¿ëÇϱ⠽±°Ô µÇ¾î ÀÖ½À´Ï´Ù. »óÀÚÀåÀÇ Çà°ªÀ̶ó°í ÇÏ´Â ¿À·¡µÈ µ¿ÀÛÀÌ ÇÊ¿äÇϸé, . *¸¦ »ç¿ëÇÏÁö ¾Ê°í , ¿¹¸¦ µé¾î ROW(t, 42)¶ó°í ÇÑ, ³»ºÎÇà°ªÀ» ±â¼úÇØ ÁÖ¼¼¿ä.

±âº»°ª¿¡¼­´Â, ROW½Ä¿¡ ÀÇÇØ ÀÛ¼ºµÇ´Â °ªÀº ÀÍ¸í ·¹ÄÚµåÇüÀÌ µË´Ï´Ù. Çʿ信 µû¶ó¼­, À̸§ ÷ºÎÀÇ º¹ÇÕÇü, Å×À̺íÀÇ ÇàÇü, ȤÀº CREATE TYPE AS·Î ÀÛ¼ºµÈ º¹ÇÕÇü¿¡ ij½ºÆ® ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¸í½ÃÀûÀΠij½ºÆ®´Â ¾Ö¸Å¼ºÀ» ¹æÁöÇϱâ À§Çؼ­ ÇÊ¿äÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.

CREATE TABLE mytable(f1 int, f2 float, f3 text);

CREATE FUNCTION getf1(mytable) RETURNS int AS 'SELECT $1.f1' LANGUAGE SQL;

-- getf1()°¡ 1°³ ¹Û¿¡ Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®¿¡ ij½ºÆ® ºÒÇÊ¿ä.
SELECT getf1(ROW(1,2.5,'this is a test'));
 getf1
-------
     1
(1 row)

CREATE TYPE myrowtype AS (f1 int, f2 text, f3 numeric);

CREATE FUNCTION getf1(myrowtype) RETURNS int AS 'SELECT $1.f1' LANGUAGE SQL;

-- ¿©±â¿¡¼­´Â, ¾î´À ÇÔ¼ö¸¦ È£ÃâÇÏ´ÂÁö¸¦ ³ªÅ¸³»±â À§Çؼ­ ij½ºÆ®°¡ ÇÊ¿ä.
SELECT getf1(ROW(1,2.5,'this is a test'));
ERROR:  function getf1(record) is not unique

SELECT getf1(ROW(1,2.5,'this is a test')::mytable);
 getf1
-------
     1
(1 row)

SELECT getf1(CAST(ROW(11,'this is a test',2.5) AS myrowtype));
 getf1
-------
    11
(1 row)

Çà»ý¼ºÀÚ´Â, º¹ÇÕÇüÀÇ Å×ÀÌºí¿­¿¡ ÀúÀåÇÏ´Â º¹ÇÕÇüÀÇ °ªÀ» ±¸ÃàÇϱâ À§ÇØ, ȤÀº º¹ÇÕÇüÀÇ ¸Å°³º¯¼ö¸¦ ¹Þ¾ÆµéÀÌ´Â ÇÔ¼ö¿¡ °Ç³×ÁÖ±â À§Çؼ­ »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¶Ç, ÀÌÇÏÀÇ ¿¹¿Í °°°Ô, 2°³ÀÇ Çà°ªÀ» ºñ±³ÇÏ´Â Àϵµ, IS NULL ȤÀº IS NOT NULL·Î ÇàÀ» °Ë»çÇÏ´Â Àϵµ °¡´ÉÇÕ´Ï´Ù.

SELECT ROW(1,2.5,'this is a test') = ROW(1, 3, 'not the same');

SELECT ROW(table.*) IS NULL FROM table;  -- detect all-null rows

ÀÚ¼¼ÇÑ °ÍÀº Section 9.17À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä. Çà»ý¼ºÀÚ´Â, Section 9.16¿¡¼­ ¼³¸íÇÑ, ¼­ºêÄõ¸®¿Í ÇÔ²² »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

4.2.12. ½ÄÀÇ Æò°¡ ±ÔÄ¢

ºÎ½ÄÀÇ Æò°¡ÀÇ ¼ø¼­´Â Á¤Àǵǰí ÀÖÁö ¾Ê½À´Ï´Ù. ƯÈ÷ ¿¬»êÀÚ³ª ÇÔ¼öÀÇ ÀÔ·ÂÀº, ¹Ýµå½Ã ¿ÞÂÊ¿¡¼­ ¿À¸¥ÂʵîÀÇ Á¤ÇØÁø ¼ø¼­·Î Æò°¡µÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù.

°Ô´Ù°¡ ±× ½ÄÀÇ ÀϺθ¦ Æò°¡ÇÑ °Í¸¸À¸·Î ½ÄÀÇ °á°ú¸¦ ÆÇ´ÜÇÒ ¼ö ÀÖ´Â °æ¿ì¿¡´Â, ´Ù¸¥ ºÎ½ÄÀÌ ÀüÇô Æò°¡µÇÁö ¾Ê´Â °Íµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é,

SELECT true OR somefunc();

±×·³, somefunc()´Â ºÒ·Á °¡Áö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ÀÌÇÏÀÇ °æ¿ìµµ °°½À´Ï´Ù.

SELECT somefunc() OR true;

À̰ÍÀº ÀϺÎÀÇ ÇÁ·Î±×·¥ ¾ð¾î·Î º¸¿©Áö´Â, ºÒ¸®¾ð ¿¬»êÀÚ¿¡¼­ÀÇ ¿ÞÂÊ¿¡¼­ ¿À¸¥ÂÊ¿¡ÀÇ "´Ü¶ô"°ú´Â ´Ù¸¥ °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä.

±× ¶§¹®¿¡, ºÎÂ÷ ÀÛ¿ëÀÌ ÀÖ´Â ÇÔ¼ö¸¦ º¹ÀâÇÑ ½ÄÀÇ ÀϺημ­ »ç¿ëÇÏ´Â °ÍÀº Ãßõ µÇÁö ¾Ê½À´Ï´Ù. ƯÈ÷, WHERE±¸ ¹× HAVING±¸·Î ºÎÂ÷ ÀÛ¿ëÀ̳ª Æò°¡¼ø¼­¿¡ ÀÇÁ¸ÇÏ´Â °ÍÀº À§ÇèÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ±¸´Â, ½ÇÇà °èȹÀ» ÀÛ¼ºÇÏ´Â °úÁ¤¿¡¼­ ºó¹øÇÏ°Ô Àçó¸® µÇ±â ¶§¹®ÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ±¸ÀÇ ºÒ½Ä(AND/OR/NOTÀÇ Æí¼º)Àº, ºÒ¸®¾ð ´ë¼öÀÇ ±ÔÄ¢À¸·Î ¿ë¼­µÇ´Â ¸ðµç ¹æ½Ä¿¡¼­ ÀçÆí¼º ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

Æò°¡ÀÇ ¼ø¼­¸¦ °­Á¦ÇÏ´Â °ÍÀÌ Áß¿äÇϸé, CASE±¸¹®(Section 9.13¸¦ ÂüÁ¶)À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, ´ÙÀ½ÀÇ ½ÄÀº WHERE±¸·Î 0 Á¦»êÀ» ÇÇÇÏ´Â ¹æ¹ýÀ¸·Î¼­´Â ½Å·Ú¼ºÀÇ ³·Àº °ÍÀÔ´Ï´Ù.

SELECT ... WHERE x <> 0 AND y/x > 1.5;

±×·¯³ª, ´ÙÀ½°ú °°ÀÌ ÇÏ¸é ¾ÈÀüÇÕ´Ï´Ù.

SELECT ... WHERE CASE WHEN x <> 0 THEN y/x > 1.5 ELSE false END;

ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î »ç¿ëµÇ´Â CASE±¸¹®Àº ÃÖÀûÈ­¸¦ ¹æÇØÇÏ´Â °ÍÀ̹ǷÎ, ÇÊ¿äÇÑ °æ¿ì¿¡°Ô¸¸ »ç¿ëÇØ ÁÖ¼¼¿ä (ƯÈ÷, ÀÌ ¿¹¿¡¼­´Â, y > 1.5*x·Î ´ë½Å¿¡ ±â¼úÇÏ´Â °ÍÀÌ ¹®Á¦¸¦ ȸÇÇÇÏ´Â °Íº¸´Ù ¶Ù¾î³­ ¹æ¹ýÀÔ´Ï´Ù. ).