Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Semestr2 / 1 - Oracle / Oracle selected docs / SQL reference.pdf
Скачиваний:
24
Добавлен:
12.05.2015
Размер:
11.92 Mб
Скачать

COMPOSE

See Also: NVL on page 6-113 and "CASE Expressions" on page 4-6

Examples

The following example uses the sample oe.product_information table to organize a "clearance sale" of products. It gives a 10% discount to all products with a list price. If there is no list price, then the sale price is the minimum price. If there is no minimum price, then the sale price is "5":

SELECT product_id, list_price, min_price,

COALESCE(0.9*list_price, min_price, 5) "Sale"

FROM product_information

WHERE supplier_id = 102050;

PRODUCT_ID

LIST_PRICE MIN_PRICE

Sale

----------

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

2382

850

731

765

3355

 

 

5

1770

 

73

73

2378

305

247

274.5

1769

48

 

43.2

COMPOSE

Syntax compose::=

COMPOSE ( string )

Purpose

COMPOSE takes as its argument a string in any datatype, and returns a Unicode string in its fully normalized form in the same character set as the input. string can be any of the datatypes CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or

NCLOB. For example, an "o" codepoint qualified by an umlaut codepoint will be returned as the o-umlaut codepoint.

See Also: Oracle9i Database Concepts for information on Unicode character sets and character semantics

6-34 Oracle9i SQL Reference

CONCAT

Examples

The following example returns the o-umlaut codepoint:

SELECT COMPOSE ( ’o’ || UNISTR(’\0308’) ) FROM DUAL;

CO

--

ö

See Also: UNISTR on page 6-196

CONCAT

Syntax concat::=

CONCAT ( char1 , char2 )

Purpose

CONCAT returns char1 concatenated with char2. Both char1 and char2 can be any of the datatypes CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB. The string returned is in the same character set as char1. Its datatype depends on the datatypes of the arguments.

In concatenations of two different datatypes, Oracle returns the datatype that results in a lossless conversion. Therefore, if one of the arguments is a LOB, then the returned value is a LOB. If one of the arguments is a national datatype, then the returned value is a national datatype. For example:

CONCAT(CLOB, NCLOB) returns NCLOB

CONCAT(NCLOB, NCHAR) returns NCLOB

CONCAT(NCLOB, CHAR) returns NCLOB

CONCAT(NCHAR, CLOB) returns NCLOB

This function is equivalent to the concatenation operator (||).

See Also: "Concatenation Operator" on page 3-4 for information on the CONCAT operator

Functions 6-35

CONVERT

Examples

This example uses nesting to concatenate three character strings:

SELECT CONCAT(CONCAT(last_name, '''s job category is '), job_id) "Job"

FROM employees

WHERE employee_id = 152;

Job

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

Hall's job category is SA_REP

CONVERT

Syntax convert::=

 

 

 

 

,

source_char_set

CONVERT

(

char

,

dest_char_set

)

Purpose

CONVERT converts a character string from one character set to another. The datatype of the returned value is VARCHAR2.

The char argument is the value to be converted. It can be any of the datatypes

CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB.

The dest_char_set argument is the name of the character set to which char is converted.

The source_char_set argument is the name of the character set in which char is stored in the database. The default value is the database character set.

Both the destination and source character set arguments can be either literals or columns containing the name of the character set.

For complete correspondence in character conversion, it is essential that the destination character set contains a representation of all the characters defined in the source character set. Where a character does not exist in the destination character set, a replacement character appears. Replacement characters can be defined as part of a character set definition.

6-36 Oracle9i SQL Reference

CORR

Examples

The following example illustrates character set conversion by converting a Latin-1 string to ASCII. The result is the same as importing the same string from a WE8ISO8859P1 database to a US7ASCII database.

SELECT CONVERT(’Ä Ê Í Õ Ø A B C D E ’, ’US7ASCII’, ’WE8ISO8859P1’) FROM DUAL;

CONVERT(’ДКНХШABCDE’

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

A E I ? ? A B C D E ?

Common character sets include:

US7ASCII: US 7-bit ASCII character set

WE8DEC: West European 8-bit character set

WE8HP: HP West European Laserjet 8-bit character set

F7DEC: DEC French 7-bit character set

WE8EBCDIC500: IBM West European EBCDIC Code Page 500

WE8PC850: IBM PC Code Page 850

WE8ISO8859P1: ISO 8859-1 West European 8-bit character set

CORR

Syntax corr::=

OVER ( analytic_clause )

CORR ( expr1 , expr2 )

See Also: "Analytic Functions" on page 6-10 for information on syntax, semantics, and restrictions

Purpose

CORR returns the coefficient of correlation of a set of number pairs. You can use it as an aggregate or analytic function.

Functions 6-37

CORR

Both expr1 and expr2 are number expressions. Oracle applies the function to the set of (expr1, expr2) after eliminating the pairs for which either expr1 or expr2 is null. Then Oracle makes the following computation:

COVAR_POP(expr1, expr2) / (STDDEV_POP(expr1) * STDDEV_POP(expr2))

The function returns a value of type NUMBER. If the function is applied to an empty set, then it returns null.

See Also:

"Aggregate Functions" on page 6-8

"About SQL Expressions" on page 4-2 for information on valid forms of expr

Aggregate Example

The following example calculates the coefficient of correlation between the list prices and minimum prices of products by weight class in the sample view oe.products:

SELECT weight_class, CORR(list_price, min_price)

FROM product_information

GROUP BY weight_class;

WEIGHT_CLASS CORR(LIST_PRICE,MIN_PRICE)

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

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

1

.99914795

2

.999022941

3

.998484472

4

.999359909

5

.999536087

Analytic Example

The following example returns the cumulative coefficient of correlation of monthly sales revenues and monthly units sold from the sample tables sh.sales and sh.times for year 1998:

SELECT t.calendar_month_number,

CORR (SUM(s.amount_sold), SUM(s.quantity_sold)) OVER (ORDER BY t.calendar_month_number) as CUM_CORR FROM sales s, times t

WHERE s.time_id = t.time_id AND calendar_year = 1998 GROUP BY t.calendar_month_number

ORDER BY t.calendar_month_number;

6-38 Oracle9i SQL Reference

COS

CALENDAR_MONTH_NUMBER CUM_CORR

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

1

21

3.994309382

4.852040875

5.846652204

6.871250628

7.910029803

8.917556399

9.920154356

10.86720251

11.844864765

12.903542662

Correlation functions require more than one row on which to operate, so the first row in the preceding example has no value calculated for it.

COS

Syntax cos::=

COS ( n )

Purpose

COS returns the cosine of n (an angle expressed in radians).

Examples

The following example returns the cosine of 180 degrees:

SELECT COS(180 * 3.14159265359/180) "Cosine of 180 degrees" FROM DUAL;

Cosine of 180 degrees

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

-1

Functions 6-39

Соседние файлы в папке Oracle selected docs