Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
56
Добавлен:
16.04.2013
Размер:
162.82 Кб
Скачать

2004

2004

2004

2004

SQL> SELECT EXTRACT(MONTH FROM date_value) FROM test_3;

EXTRACT(MONTHFROMDATE_VALUE)

----------------------------

1

10

12

7

SQL> SELECT EXTRACT(DAY FROM date_value) FROM test_3;

EXTRACT(DAYFROMDATE_VALUE)

--------------------------

12

4

31

24

SQL>

SQL> --

SQL> -- Функции преобразования данных

SQL> --

SQL>

SQL> -- TO_CHAR - преобразовать выражение к строке

SQL> SELECT TO_CHAR(100) FROM DUAL;

TO_

---

100

SQL> SELECT CONCAT('Number = ', TO_CHAR(100)) FROM DUAL;

CONCAT('NUMB

------------

Number = 100

SQL> SELECT CONCAT('LOG(10, 232) = ', TO_CHAR(LOG(10, 232))) FROM DUAL;

CONCAT('LOG(10,232)=',TO_CHAR(LOG(10,232)))

-------------------------------------------------------

LOG(10, 232) = 2.36548798489089967297406344714273407156

SQL> -- TO_DATE - преобразовать выражение к типу дата

SQL> SELECT TO_DATE('2001/04/04') FROM DUAL;

TO_DATE(`2

----------

2001-04-04

SQL> SELECT TO_DATE('21-04-2004', 'DD-MM-YYYY') FROM DUAL;

TO_DATE(`2

----------

2004-04-21

SQL> SELECT TO_DATE('2004.12.01', 'YYYY.MM.DD') FROM DUAL;

TO_DATE("2

----------

2004-12-01

SQL> SELECT ADD_MONTHS(TO_DATE('2001/04/04'), 2) FROM DUAL;

ADD_MONTHS

----------

2001-06-04

SQL> SELECT LAST_DAY(TO_DATE('2004/04/04')) FROM DUAL;

LAST_DAY(T

----------

2004-04-30

SQL>

SQL> -- TO_NUMBER - преобразовать выражение к типу число

SQL> SELECT TO_NUMBER('500') FROM DUAL;

TO_NUMBER('500')

----------------

500

SQL> SELECT SQRT(TO_NUMBER('500') + 11) FROM DUAL;

SQRT(TO_NUMBER('500')+11)

-------------------------

22.6053091

SQL> SELECT TO_NUMBER(SUBSTR('Value=500', -3, 3)) FROM DUAL;

TO_NUMBER(SUBSTR('VALUE=500',-3,3))

-----------------------------------

500

SQL>

SQL> -- CAST - преобразование типов выражений

SQL> SELECT CAST('2004-10-20' AS DATE) FROM DUAL;

CAST('2004

----------

2004-10-20

SQL> SELECT CAST(15 AS VARCHAR2(10)) FROM DUAL;

CAST(15ASV

----------

15

SQL> SELECT CAST('2004' AS INT) FROM DUAL;

CAST('2004'ASINT)

-----------------

2004

SQL> SELECT CAST(EXP(8.2) AS VARCHAR2(50)) FROM DUAL;

CAST(EXP(8.2)ASVARCHAR2(50))

--------------------------------------------------

3640.95030733235472156857183395742043191

SQL> --

SQL> -- Специальные функции и выражения

SQL> --

SQL>

SQL> -- CASE - проверка набора условий

SQL> SELECT CASE WHEN number_value > 1000 THEN 'BIG number'

2 ELSE 'small number'

3 END

4 FROM test_3;

CASEWHENNUMB

------------

BIG number

BIG number

small number

small number

SQL>

SQL> SELECT CASE WHEN number_value < 1000 THEN 'small number'

2 WHEN number_value < 2000 THEN 'medium number'

3 ELSE 'BIG number'

4 END

5 FROM test_3;

CASEWHENNUMBE

-------------

medium number

BIG number

small number

small number

SQL>

SQL> -- DECODE - сравнение выражения с набором значений

SQL> SELECT DECODE(10, 1, 'Expression = 1',

2 2, 'Expression = 2',

3 10, 'Expression = 10',

4 'Not found')

5 FROM DUAL;

DECODE(10,1,EX

---------------

Expression = 10

SQL>

SQL> SELECT DECODE(3, 1, 'Expression = 1',

2 2, 'Expression = 2',

3 10, 'Expression = 10',

4 'Not found')

5 FROM DUAL;

DECODE(3,

---------

Not found

SQL> SELECT DECODE(symbol_value, 'A', 'Letter A',

2 'Z', 'Letter Z',

3 'Unknown letter')

4 FROM test_3;

DECODE(SYMBOL_

--------------

Letter Z

Letter A

Unknown letter

Letter A

SQL>

SQL>

SQL> -- NVL(выражение, значение_при_NULL) - если <выражение>=NULL то функция

SQL> -- возвращает <значение_при_NULL>, иначе возвращается <выражение>

SQL> INSERT INTO test_3 VALUES (NULL, 10, 'A', SYSDATE);

1 row created.

SQL> INSERT INTO test_3 VALUES ('str', NULL, 'B', SYSDATE);

1 row created.

SQL>

SQL> SELECT string_value, number_value FROM test_3;

STRING_VALUE NUMBER_VALUE

-------------------- ------------

AbcdeF 1234.56

fEDCBa 6543.21

xyz. abc 99.99

str 10

10

str

6 rows selected.

SQL> SELECT NVL(string_value, 'undefined'), NVL(number_value, 0) FROM test_3;

NVL(STRING_VALUE,UN NVL(NUMBER_VALUE,0)

-------------------- -------------------

AbcdeF 1234.56

fEDCBa 6543.21

xyz. abc 99.99

str 10

undefined 10

str 0

6 rows selected.

SQL>

SQL> -- NVL(выражение, значение_при_не_NULL, значение_при_NULL) - если <выражение>=NULL

SQL> -- то функция возвращает <значение_при_NULL>, иначе возвращается <выражение_при_не_NULL>

SQL> SELECT string_value, NVL2(string_value, 'OK', '?') FROM test_3;

STRING_VALUE NV

-------------------- --

AbcdeF OK

fEDCBa OK

xyz. abc OK

str OK

?

str OK

6 rows selected.

SQL>

SQL> --

SQL> -- УДАЛЕНИЕ ТАБЛИЦЫ

SQL> --

SQL> DROP TABLE test_3;

Table dropped.

SQL>

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.

Соседние файлы в папке lab3
  • #
    16.04.2013162.82 Кб56lab3.doc
  • #
    16.04.201336.54 Кб53lab3_sample.lst
  • #
    16.04.20138.38 Кб56lab3_sample.sql