Материал: SQL в вопросах и задачах

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
background image

31 

2.3. 

П реобраз ование

вы вода

и

встроенны е

ф ункц ии

В

  SQL 

реа лиз ов а ны

оп ераторы

п реобраз ов а ния

д а нных

и

в строенные

функции

, 

п ред на з на ч енные

д ля

ра боты

со

з на ч ениями

столбцов

и

/

или

конста нта ми

в

в ыражениях

. 

Исп ользов а ние

э тих

оп ератор ов

д оп устимо

в

з а п роса х

в езд е

, 

гд е

можно

исп ользов а ть

в ыра жения

. 

2.3.1. 

Числ овы е

, 

сим вол ь ны е

и

ст роковы е

конст ант ы

Н есмотря

на

то

, 

ч то

  SQL 

ра бота ет

с

д а нными

в

п онятиях

строк

и

столбцов

та блиц

, 

имеется

в оз можность

п рименения

з на ч ений

в ыра жений

, 

п остроенных

с

исп ользов а нием

в строенных

функций

, 

конста нт

, 

имен

столбцов

, 

которые

оп ред еляются

ка к

св оего

род а

в иртуа льные

столбцы

. 

О ни

п омещ а ются

в

сп иске

столбцов

и

могут

соп ров ожд а ться

п сев д онима ми

.  

Е сли

в

з а п росе

в место

сп ецифика ции

столбца

 SQL 

обна р ужив а ет

чи сло

, 

то

оно

интерп ретируется

ка к

чи сло в а я

ко нст а нт а

. 

Си м в о льны е

ко нст а нт ы

д олжны

ука з ыв а ться

в

од ина рных

ка в ыч ка х

. 

Е сли

од ина р на я

ка в ыч ка

д олжна

в ыв од иться

ка к

ч а сть

строков ой

конста нты

, 

то

ее

нужно

п ред в а р ить

д ругой

од ина рной

ка в ыч кой

Н а п ример

, 

результа том

в ып олнения

з а п роса

SELECT

‘Фа ми ли я’

,

SURNAME

,

‘Имя’

, 

NAME

, 

100

FROM

STUDENT

; 

яв ляется

та блица

след ующ его

в ид а

SURNAME 

NAME 

Фа милия

Ив а нов

Имя

Ив а н

100 

Фа милия

Петров

Имя

Петр

100

Фа милия

Сид ор ов

Имя

Ва д им

100

Фа милия

К уз нецов

Имя

Б орис

100

Фа милия

Зайцева

  

Имя

О льга

100

Фа милия

Па в лов

Имя

А нд рей

100

Фа милия

К отов

Имя

Па в ел

100

Фа милия

Л укин

Имя

А ртем

100

Фа милия

Петров

Имя

А нтон

100

Фа милия

Б елкин

Имя

Ва д им

100

… …

… …

… …

… …

… …

background image

32 

2.3.2. 

Ариф м ет ические

операц ии

дл я

преобраз ования

числ овы х

данны х

  

•

У на рный

 (

од иноч ный

) 

оп ер а тор

“

–

”

 (

з на к

минус

) 

из меняет

з на к

ч ислов ого

з на ч ения

, 

п еред

которым

он

стоит

, 

на

п ротив оп оложный

.

•

Б ина р ные

оп ера торы

“

+

”

, 

“

–

“

, 

“

*

”

и

“

/

”

п ред оста в ляют

в оз можность

в ып олнения

а р ифметич еских

оп ераций

сложения

, 

в ыч ита ния

, 

умножения

и

д еления

.

Н а п ример

, 

результа т

з а п роса

SELECT

SURNAME

,

 NAME

,

 STIPEND

,

–

(

STIPEND*KURS

)

/2 

       

FROM

STUDENT 

       

WHERE

KURS

=

4

AND

STIPEND

>

0

; 

буд ет

в ыгляд еть

след ующ им

обра з ом

  

SURNAME 

NAME 

STIPEND

KURS

Сид ор ов

Ва д им

150 

4 

-300 

Петров

А нтон

200 

4 

-400 

… …

… …

… …

… …

… …

2.3.3. 

С им вол ь ная

операц ия

конкат енац ии

ст рок

  

О п ерация

конка тена ции

“

||

”

п оз в оляет

соед инять

  (

“склеив а ть”

) 

з на ч ения

д в ух

или

более

столбцов

симв ольного

тип а

ил и

симв ольных

конста нт

в

од ну

строку

. 

Э та

оп ер а ция

имеет

синта ксис

<

зна чи м о е

си м в о льно е

в ы р а ж ени е

> {

||

}<

зна чи м о е

си м в о льно е

в ы р а ж ени е

>. 

Н а п ример

:  

SELECT

SURNAME

|| 

‘

_

’

 || 

NAME

,

 STIPEND  

       

FROM

STUDENT 

       

WHERE

KURS

=

4

AND

STIPEND

>

0

; 

Рез ульта т

з а п роса

буд ет

в ыгляд еть

след ующ им

обр а з ом

  

STIPEND

Сид ор ов

_

Ва д им

150 

Петров

_

А нтон

200 

… …

… …

background image

33 

2.3.4. 

С им вол ь ны е

ф ункц ии

преобраз ования

букв

раз л ичны х

сл ов

в

строке

•

LOWER

–

п ерев од

в

строч ные

симв олы

 (

нижний

регистр

) 

LOWER

 (<

ст р о ка

>) 

•

UPPER

–

п ерев од

в

п роп исные

симв олы

 (

в ерхний

регистр

)

UPPER

 (<

ст р о ка

>)  

•

INITCAP

–

п ерев од

п ер в ой

букв ы

ка жд ого

слов а

строки

в

з а гла в ную

(

п роп исную

) 

INITCAP

(<

ст р о ка

>) 

Н а п ример

: 

SELECT

  

LOWER

(

SURNAME

), 

UPPER

(

NAME

)

       

FROM

STUDENT 

       

WHERE

KURS

=

4

AND

STIPEND

>

0

; 

Рез ульта т

з а п роса

буд ет

в ыгляд еть

след ующ им

обр а з ом

  

SURNAME 

NAME 

Сид ор ов

ВА Д ИМ

Петров

А Н Т О Н

… …

… …

2.3.5. 

С им вол ь ны е

строковы е

ф ункц ии

•

LPAD

–

д оп олнение

строки

слев а

LPAD 

(<

ст р о ка

>, <

д ли на

> [, <

по д ст р о ка

>])

  

o

<

ст р о ка

> 

д оп олняется

слев а

ука з а нной

в

<

по д ст р о ке

> 

п ослед ов а тельностью

симв олов

д о

ука з а нной

  <

д ли ны

>  (

в оз можно

, 

с

п ов торением

п ослед ов а тельности

); 

o

если

  <

по д ст р о ка

> 

не

ука з а на

, 

то

п о

умолч а нию

  <

ст р о ка

> 

д оп олняется

п робела ми

; 

o

если

  <

д ли на

> 

меньше

   

д лины

  <

ст р о ки

>, 

то

   

исход на я

  <

ст р о ка

> 

усека ется

слев а

д о

з а д а нной

 <

д ли ны

>. 

background image

34 

•

RPAD

–

д оп олнение

строки

сп рав а

RPAD 

(<

ст р о ка

>, <

д ли на

> [, <

по д ст р о ка

>])  

o

<

ст р о ка

> 

д оп олняется

спра в а

ука з а нной

в

<

по д ст р о ке

> 

п ослед ов а тельностью

симв олов

д о

ука з а нной

   <

д ли ны

> (

в оз можно

, 

с

п ов торением

п ослед ов а тельности

); 

o

если

  <

по д ст р о ка

> 

не

ука з а на

, 

то

п о

умолч а нию

  <

ст р о ка

> 

д оп олняется

п робела ми

; 

o

если

  <

д ли на

> 

меньше

   

д лины

  <

ст р о ки

>, 

то

   

исход на я

  <

ст р о ка

> 

усека ется

сп рав а

д о

з а д а нной

 <

д ли ны

>

. 

•

LTRIM

–

уд а ление

лев ых

гр а нич ных

симв олов

LTRIM 

(<

ст р о ка

> [,<

по д ст р о ка

>])

  

o

из

 <

ст р о ки

> 

уд а ляются

слев а

симв олы

, 

ука з а нные

в

 <

по д ст р о ке

>; 

o

если

 <

по д ст р о ка

> 

не

ука з а на

, 

то

п о

умолч а нию

  

уд а ляются

п робелы

; 

o

в

 <

ст р о ку

> 

сп ра в а

д оба в ляется

столько

п робелов

, 

сколько

симв олов

слев а

было

уд а лено

, 

то

есть

  

д лина

 <

ст р о ки

> 

оста ется

неиз менной

. 

•

RTRIM

–

уд а ление

п ра в ых

гра нич ных

симв олов

RTRIM 

(<

ст р о ка

> [,<

по д ст р о ка

>]) 

o

из

 <

ст р о ки

> 

уд а ляются

сп ра в а

симв олы

, 

ука з а нные

в

 <

по д ст р о ке

>; 

o

если

 <

по д ст р о ка

> 

не

ука з а на

, 

то

п о

умолч а нию

уд а ляются

п робелы

; 

o

в

  <

ст р о ку

> 

слев а

д оба в ляется

столько

п робелов

, 

сколько

симв олов

сп рав а

было

уд а лено

, 

то

есть

д лина

 <

ст р о ки

> 

оста ется

неиз менной

. 

Функции

LTRIM

и

RTRIM

рекоменд уется

исп ользов а ть

п ри

на п иса нии

услов ных

в ыражений

, 

в

которых

срав нив а ются

текстов ые

строки

. 

Д ело

в

том

, 

ч то

на лич ие

на ч а льных

или

конеч ных

п робелов

в

срав нив а емых

оп ер а нд а х

может

иска з ить

результа т

сра в нения

.  

Н а п ример

, 

конста нты

‘

  

ААА’

и

‘

ААА

   

’

не

р а в ны

д руг

д ругу

. 

•

SUBSTR

–

в ыд еление

п од строки

SUBSTR 

(<

ст р о ка

>,<

на ча ло

> [,<

ко ли чест во

>]) 

o

из

 <

ст р о ки

> 

в ыбирается

з а д а нное

 <

ко ли чест в о

> 

симв олов

, 

на ч ина я

с

ука з а нной

п оз иции

в

строке

 <

на ча ло

>; 

background image

35 

o

если

 <

ко ли чест в о

> 

не

з а д а но

, 

симв олы

в ыбираются

с

 <

на ча ла

> 

и

д о

конца

 <

ст р о ки

>. 

o

в оз в ращ а ется

п од строка

, 

сод ержа щ а я

ч исло

симв олов

, 

з а д а нное

п а р а метром

  <

ко ли чест в о

>, 

либо

ч исло

симв олов

от

п оз иции

, 

з а д а нной

п а р а метром

 <

на ча ло

> 

д о

конца

ст р о ки

; 

o

если

ука з а нное

  <

на ча ло

> 

п р ев осход ит

д лину

  <

ст р о ки

>, 

то

в оз в ращ а ется

строка

, 

состоящ а я

из

п робелов

. 

Д лина

э той

строки

буд ет

рав на

з а д а нному

  <

ко ли чест в у

> 

или

исход ной

д лине

  <

ст р о ки

> 

(

п ри

не

з а д а нном

 <

ко ли чест в е

> ). 

•

INSTR

–

п оиск

п од строки

  

INSTR

(<

ст р о ка

>,<

по д ст р о ка

> [,<

на ча ло

по и ска

>  

[,<

но м ер

в хо ж д ени я

>]])

o

<

на ча ло

по и ска

> 

з а д а ет

на ч а льную

п оз ицию

в

строке

д ля

п оиска

<

по д ст р о ки

>. 

Е сли

не

з а д а но

, 

то

п о

умолч а нию

п ринима ется

з на ч ение

 1; 

o

<

но м ер

в хо ж д ени я

> 

з а д а ет

п оряд ков ый

номер

искомой

п од строки

. 

Е сли

не

з а д а н

, 

то

п о

умолч а нию

п р инима ется

з на ч ение

 1; 

o

з на ч имые

в ыражения

в

  <

на ча ле

по и ска

> 

или

в

  <

но м ер е

в хо ж д ени я

> 

д олжны

иметь

безз на ков ый

целый

тип

или

п р ив од иться

к

э тому

тип у

; 

o

тип

в оз в ращ а емого

з на ч ения

–

INT;

o

функция

в оз в ращ а ет

п оз ицию

на йд енной

п од строки

. 

•

LENGTH 

–

оп ред еление

д лины

строки

LENGTH

(<

ст р о ка

>) 

o

д лина

 <

ст р о ки

>, 

тип

в оз в р а щ а емого

з на ч ения

–

INT

; 

o

функция

в оз в ращ а ет

NULL

, 

если

 <

ст р о ка

> 

имеет

NULL

-

з на ч ение

. 

П римеры

з а п росов

, 

исп ользующ их

строков ые

функции

. 

Рез ульта т

з а п роса

SELECT

LPAD

 (

SURNAME

, 

10

, 

‘

@

’

),  

RPAD

 (

NAME

, 

10

, 

‘

$

’

)

       

FROM

STUDENT 

       

WHERE

KURS

=

3

AND

STIPEND

>

0

; 

Источник: https://files.student-it.ru/previewfile/15134