Next Previous Contents

3. ±âÃÊÆí 1

3.1 ¹®ÀÚ¿­ »ó¼ö (String Constants)

 select text 'nogadax' AS CAST_str1;

    cast_str1 
   -----------
    nogadax
   (1 row)

 select 'ngd'::text AS CAST_str2;
 
   cast_str2 
   -----------
    ngd
   (1 row)

 select 'ngd\'s Home'::text AS CAST_str3;

    cast_str3  
   ------------
    ngd's Home
   (1 row)

 select 'ngd''s Home'::text AS CAST_str4;

    cast_str4  
   ------------
    ngd's Home
   (1 row)

3.2 Integer Constants

 select int8 '4000000000' as cast_i8_1;

    cast_i8_1  
   ------------
    4000000000
   (1 row)

 select 4000000000::int8 as cast_i8_2;

    cast_i8_2  
   ------------
    4000000000
   (1 row)

 select int8 '4000000000' + '4000000000'::int8 as cast_i8_3;

    cast_i8_3  
   ------------
    8000000000
   (1 row)

3.3 Floating Point Constants

 select float4 '1.55' as cast_f4_1;

    cast_f4_1 
   -----------
         1.55
   (1 row)

 select '1.55'::float4 as cast_f4_2;

    cast_f4_2 
   -----------
         1.55
   (1 row)

3.4 Data Types

 select bool 't' as bool_1;

    bool_1 
   --------
    t
   (1 row)

 select int2 '12', 13::int4, 14::int8, 100;

    ?column? | ?column? | ?column? | ?column? 
   ----------+----------+----------+----------
          12 |       13 |       14 |      100
   (1 row)

 select float4 '11.234511' as float4_1;

    float4_1 
   ----------
     11.2345
   (1 row)

 select float8 '11.234511' as float8_1;

    float8_1  
   -----------
    11.234511
   (1 row)

 select float8 '1211.2345112111' as float8_2;

       float8_2     
   -----------------
    1211.2345112111
   (1 row)

 select text 'ngd' as team_name , point '(1,2)' as location;

    team_name | location 
   -----------+----------
    ngd       | (1,2)
   (1 row)

select '2001-3-1'::date + 4 as date2;

    date2    
------------
 2001-03-5
(1 row)

select '2001-3-1'::date +'2 year'::interval as date3;

         date3          
------------------------
 2003-03-01 00:00:00+09
(1 row)

select '2001-3-1'::date +'3 month'::interval as date4;

         date4          
------------------------
 2001-06-01 00:00:00+09
(1 row)

select '2001-3-1'::date +'4 day'::interval as date5;

         date5          
------------------------
 2001-03-05 00:00:00+09
(1 row)

3.5 Function Constants

"getpgusername()"ÇÔ¼ö´Â ÇöÀçÀÇ »ç¿ëÀÚ À̸§À» ¸®ÅÏÇÑ´Ù.

 select getpgusername() AS cur_user_name ;

    cur_user_name 
   ---------------
    postgres
   (1 row)

"now" ´Â ÇöÀç½Ã°£À» °®´Â Ưº°ÇÑ º¯¼öÀÌ´Ù.

 select date('now') as cur_date;

     cur_date  
   ------------
    2001-03-16
   (1 row)


 select time('now') as cur_time;

    cur_time 
   ----------
    19:14:17
   (1 row)


 select timestamp('now') as cur_transaction_date_time;

    cur_transaction_date_time 
   ---------------------------
    2001-03-16 19:14:17+09
   (1 row)

3.6 String Functions

 select char_length('nogadax') as char_length_1;

    char_length_1 
   ---------------
                7
   (1 row)


 select char_length('³ë°¡´Ù') as char_length_2;

    char_length_2 
   ---------------
                3
   (1 row)


 select position('g' in 'nogada') as pos_1;

    pos_1 
   -------
        3
   (1 row)

3.7 SQL FUNCTIONs

NULLIF(input,value) ´Â input==value À̸é NULLÀ» ¸®ÅÏÇÏ°í ¾Æ´Ï¸é input °ªÀ» ¸®ÅÏÇÑ´Ù.

¾Æ·¡ÀÇ Ã¹ ¿¹Á¦´Â NULL À» ¸®ÅÏÇÑ´Ù.

 select NULLIF('nn'::text,'nn'::text) as NULLIF_Test_1;

    nullif_test_1 
   ---------------
    
   (1 row)

 select NULLIF('nb'::text,'nn'::text) as NULLIF_Test_2;

    nullif_test_2 
   ---------------
    nb
   (1 row)

COALESCE(list) ÀÇ list ´Â "a,b,c,.."ó·³ Ç¥ÇöÇÏ°í ¸®½ºÆ®»óÀÇ ÀÎÀÚÁß NULL °ªÀÌ ¾Æ´Ñ Á¦ÀÏ Ã¹ ÀÎÀÚ¸¦ ¸®ÅÏÇÑ´Ù.

 select COALESCE(1,2,3,4) AS COALESCE_Test_1;

    coalesce_test_1 
   -----------------
                  1
   (1 row)

 
 select COALESCE(5,6,7) AS COALESCE_Test_2;

    coalesce_test_2 
   -----------------
                  5
   (1 row)


 select COALESCE(8,9) AS COALESCE_Test_3;

    coalesce_test_3 
   -----------------
                  8
   (1 row)

"CASE WHEN expr THEN value1 ELSE value2 END" expr ÀÌ ÂüÀ̸é value1À», ¾Æ´Ï¸é value2¸¦ ¸®ÅÏÇÑ´Ù.

 select 
  CASE 
    WHEN 'ngd'::text = 'ngd'::text
     THEN 'match'  ELSE 'no match'
  END ;


    case  
   -------
    match
   (1 row)



 select 
  CASE 
    WHEN 'ngd'::text = 'nogadax'::text
     THEN 'match'  ELSE 'no match'
  END ;


     case   
   ----------
    no match
   (1 row)

3.8 SQL FUNCTIONÀ» ÀÌ¿ëÇÑ ÇÔ¼ö ¿¹Á¦

 DROP FUNCTION SQL_FUNC_1(int4);
 DROP FUNCTION SQL_FUNC_2(int4);
 DROP TABLE NOGADA_TAB;

 create TABLE NOGADA_TAB (id_ngd int4 , name_ngd text);

 INSERT INTO NOGADA_TAB VALUES (1, 'ngd_1');
 INSERT INTO NOGADA_TAB VALUES (2, 'ngd_2');

 CREATE FUNCTION SQL_FUNC_1(int4) RETURNS text AS '
 SELECT
  CASE
     WHEN NOGADA_TAB.id_ngd = $1
       THEN ''ÀÖ±º¿ä..''::text
       ELSE ''¾ø±º¿ä..''::text
  END
 ' LANGUAGE 'sql';


  SELECT SQL_FUNC_1(1) ;


   sql_func_1 
  ------------
   ÀÖ±º¿ä..
  (1 row)



 SELECT SQL_FUNC_1(3) ;


   sql_func_1 
  ------------
   ¾ø±º¿ä..
  (1 row)


 CREATE FUNCTION SQL_FUNC_2(int4) RETURNS text AS '
 SELECT
  CASE
     WHEN NOGADA_TAB.id_ngd = $1
       THEN NOGADA_TAB.name_ngd
       ELSE ''¾ø±º¿ä..''::text
  END
 ' LANGUAGE 'sql';



  SELECT SQL_FUNC_2(1) as NOGADA_TAB_NAME;


   nogada_tab_name 
  -----------------
   ngd_1
  (1 row)

3.9 Full SQL SOURCE

´ÙÀ½Àº À§¿¡¼­ ¼³¸íÇÑ Àüü ¿¹Á¦ÀÌ´Ù. copyÇÏ¿© ÆÄÀÏ·Î ÀúÀå ÈÄ PSQL ¿¡¼­ Å×½ºÆ® ÇÒ ¼ö ÀÖ´Ù. Âü°í·Î "--" ½ÃÀÛÇÏ´Â ¶óÀÎÀº ÁÖ¼®ÀÌ´Ù.


------------------------------------------------
-- By NoGaDa-X  (nogadax@kldp.org)
-- PostgreSQL's SQL Examples
-- (http://ngd.pe.kr)
-- /2001/03/15
------------------------------------------------

--String Constants

select text 'nogadax' AS CAST_str1;
select 'ngd'::text AS CAST_str2;
select 'ngd\'s Home'::text AS CAST_str3;
select 'ngd''s Home'::text AS CAST_str4;

--Integer Constants

select int8 '4000000000' as cast_i8_1;
select 4000000000::int8 as cast_i8_2;
select int8 '4000000000' + '4000000000'::int8 as cast_i8_3;

--Floating Point Constants

select float4 '1.55' as cast_f4_1;
select '1.55'::float4 as cast_f4_2;

--Data Types

select bool 't' as bool_1;
select int2 '12', 13::int4, 14::int8, 100;
select float4 '11.234511' as float4_1;
select float8 '11.234511' as float8_1;
select float8 '1211.2345112111' as float8_2;
select text 'ngd' as team_name , point '(1,2)' as location;

--Function Constants

select getpgusername() AS cur_user_name ;
select date('now') as cur_date;
select time('now') as cur_time;
select timestamp('now') as cur_transaction_date_time;

--String Functions

select char_length('nogadax') as char_length_1;
select char_length('³ë°¡´Ù') as char_length_2;
select position('g' in 'nogada') as pos_1;

--SQL FUNCTIONs
--SQL FUNCTIONs

--NULLIF(input,value) 
--IF input==value THEN return NULL ELSE input

select NULLIF('nn'::text,'nn'::text) as NULLIF_Test_1;
select NULLIF('nb'::text,'nn'::text) as NULLIF_Test_2;

--COALESCE(list)
--list is (a,b,c,..)
--First-Non-NULL-value in list is returned

select COALESCE(1,2,3,4) AS COALESCE_Test_1;
select COALESCE(5,6,7) AS COALESCE_Test_2;
select COALESCE(8,9) AS COALESCE_Test_3;

--CASE WHEN expr THEN value1 ELSE value2 END

select 
  CASE 
    WHEN 'ngd'::text = 'ngd'::text
     THEN 'match'  ELSE 'no match'
  END ;
select 
  CASE 
    WHEN 'ngd'::text = 'nogadax'::text
     THEN 'match'  ELSE 'no match'
  END ;

--User-defined Function with SQL's Functions

DROP FUNCTION SQL_FUNC_1(int4);
DROP FUNCTION SQL_FUNC_2(int4);
DROP TABLE NOGADA_TAB;

create TABLE NOGADA_TAB (id_ngd int4 , name_ngd text);

INSERT INTO NOGADA_TAB VALUES (1, 'ngd_1');
INSERT INTO NOGADA_TAB VALUES (2, 'ngd_2');

CREATE FUNCTION SQL_FUNC_1(int4) RETURNS text AS '
SELECT
  CASE
     WHEN NOGADA_TAB.id_ngd = $1
       THEN ''ÀÖ±º¿ä..''::text
       ELSE ''¾ø±º¿ä..''::text
  END
' LANGUAGE 'sql';

SELECT SQL_FUNC_1(1) ;
SELECT SQL_FUNC_1(3) ;


CREATE FUNCTION SQL_FUNC_2(int4) RETURNS text AS '
SELECT
  CASE
     WHEN NOGADA_TAB.id_ngd = $1
       THEN NOGADA_TAB.name_ngd
       ELSE ''¾ø±º¿ä..''::text
  END
' LANGUAGE 'sql';

SELECT SQL_FUNC_2(1) as NOGADA_TAB_NAME;


Next Previous Contents