Логические функции

Применение программы osql в интерактивном режимеUsing osql Interactively

Чтобы использовать программу osql в интерактивном режиме, введите команду osql (и любые параметры) в командной строке.To use osql interactively, type the osql command (and any of the options) at a command prompt.

Файл, содержащий запрос (например, Stores.qry), можно загрузить в программу osql и выполнить, введя команду следующего вида:You can read in a file containing a query (such as Stores.qry) for execution by osql by typing a command similar to this:

Можно считать запрос из файла (например, Titles.qry) и направить результаты в другой файл, введя команду, подобную следующей:You can read in a file containing a query (such as Titles.qry) and direct the results to another file by typing a command similar to this:

Важно!

По возможности используйте параметр -E(доверительное соединение).When possible, use the -Eoption (trusted connection).

При использовании программы osql в интерактивном режиме файл операционной системы можно считать в буфер команд с помощью команды :rимя_файла.When using osql interactively, you can read an operating-system file into the command buffer with :rfile_name. Это приведет к отправке скрипта SQL в файле с именем имя_файла непосредственно на сервер в виде единого пакета.This sends the SQL script in file_name directly to the server as a single batch.

Примечание

Если при использовании программы osqlв файле скрипта SQL содержится разделитель пакетов GO, SQL ServerSQL Server воспринимает его как синтаксическую ошибку.When using osql, SQL ServerSQL Server treats the batch separator GO, if it appears in a SQL script file, as a syntax error.

Команды OSQLOSQL Commands

Помимо инструкций Transact-SQLTransact-SQL в программе osqlтакже доступны следующие команды.In addition to Transact-SQLTransact-SQL statements within osql, these commands are also available.

Get-HelpCommand ОписаниеDescription
GOGO Выполняет все инструкции, введенные после последней команды GO.Executes all statements entered after the last GO.
RESETRESET Очищает все введенные инструкции.Clears any statements you have entered.
QUIT или EXIT( )QUIT or EXIT( ) Завершение работы программы osql.Exits from osql.
CTRL+CCTRL+C Завершает запрос без выхода из программы osql.Ends a query without exiting from osql.

Примечание

Команды !!The !! и ED больше не поддерживаются программой osql.and ED commands are no longer supported by osql.

Признаки конца команды GO (по умолчанию), RESET, EXIT, QUIT и CTRL+C распознаются только в начале строки, сразу после запроса программы osql .The command terminators GO (by default), RESET EXIT, QUIT, and CTRL+C, are recognized only if they appear at the beginning of a line, immediately following the osql prompt.

GO обозначает конец пакетного файла и исполнения любых кэшированных инструкций Transact-SQLTransact-SQL .GO signals both the end of a batch and the execution of any cached Transact-SQLTransact-SQL statements. При нажатии клавиши ВВОД в конце каждой строки ввода программа osql выполняет кэширование инструкций из этой строки.When you press ENTER at the end of each input line, osql caches the statements on that line. При нажатии клавиши ВВОД после ввода команды GO все текущие инструкции в кэше отправляются в виде пакета в SQL ServerSQL Server.When you press ENTER after typing GO, all of the currently cached statements are sent as a batch to SQL ServerSQL Server.

Последняя версия программы osql работает таким образом, как будто в конце любого выполняемого скрипта имеется подразумеваемая инструкция GO, поэтому выполняются все инструкции скрипта.The current osql utility works as if there is an implied GO at the end of any script executed, therefore all statements in the script execute.

Закончите команду с помощью ввода строки, которая начинается с признака конца команды.End a command by typing a line beginning with a command terminator. Следом за признаком конца команды можно ввести целое число, чтобы указать, сколько раз выполнить команду.You can follow the command terminator with an integer to specify how many times the command should be run. Например, чтобы выполнить эту команду 100 раз, введите:For example, to execute this command 100 times, type:

Результаты выводятся на печать один раз после завершения.The results are printed once at the end of execution. Программаosql не принимает более 1000 символов в одной строке.osql does not accept more than 1,000 characters per line. Большие инструкции должны вводиться в несколько строк.Large statements should be spread across multiple lines.

Для повторного вызова и изменения инструкций osql могут использоваться средства повторного вызова команд Windows.The command recall facilities of Windows can be used to recall and modify osql statements. Существующий буфер запросов можно очистить с помощью команды RESET.The existing query buffer can be cleared by typing RESET.

При запуске хранимых процедур программа osql выводит пустую строку между результирующими наборами в пакете.When running stored procedures, osql prints a blank line between each set of results in a batch. Кроме того, сообщение «обработано строк: 0» не выводится, если оно не применимо к выполненной инструкции.In addition, the «0 rows affected» message does not appear when it does not apply to the statement executed.

ПримерыExamples

A.A. Выполнение простого примераRunning a simple example

Следующие инструкции создают простую таблицу и добавляют значения , , и в столбец .The following statements create a simple table and add the values of , , , and to the column.

Следующий запрос возвращает значение , так как меньше некоторых из значений в таблице.The following query returns because is less than some of the values in the table.

Следующий запрос возвращает значение , так как не меньше каждого из значений в таблице.The following query returns because isn’t less than all of the values in the table.

Б.B. Выполнение практического примераRunning a practical example

В приведенном ниже примере показано создание хранимой процедуры, определяющей, могут ли в течение заданного количества дней быть выполнены все части заказа с указанным идентификатором из базы данных .The following example creates a stored procedure that determines whether all the components of a specified in the database can be manufactured in the specified number of days. В этом примере для создания списка количества значений для всех компонентов используется вложенный запрос, а затем проводится проверка того, превышают ли все значения, возвращаемые вложенным запросом, указанное количество дней.The example uses a subquery to create a list of the number of value for all the components of the specific , and then tests whether any of the values that are returned by the subquery are greater than the number of days specified. Если каждое возвращаемое значение меньше заданного значения, то условие равно TRUE и печатается первое сообщение.If every value of that is returned is less than the number provided, the condition is TRUE and the first message is printed.

Для проверки этой процедуры выполните ее, используя , имеющий один компонент, требующий на выполнение дня, и два компонента, требующих немедленного выполнения.To test the procedure, execute the procedure by using the , which has one component that requires days and two components that require 0 days. Первая инструкция отвечает этим критериям.The first statement meets the criteria. Второй запрос — нет.The second query doesn’t.

Результирующий набор:Here is the result set.

Результирующий набор:Here is the result set.

ПримечанияRemarks

Явное включение очень большого количества значений (много тысяч значений, разделенных запятыми) в круглые скобки в предложение IN может привести к интенсивному расходованию ресурсов и возврату ошибки 8623 или 8632.Explicitly including an extremely large number of values (many thousands of values separated by commas) within the parentheses, in an IN clause can consume resources and return errors 8623 or 8632. Чтобы избежать этой проблемы, храните элементы списка IN в таблице и используйте вложенный запрос SELECT в предложении IN.To work around this problem, store the items in the IN list in a table, and use a SELECT subquery within an IN clause.

Ошибка 8623.Error 8623:

Ошибка 8632.Error 8632:

MySQL Date Functions

Function Description
ADDDATE Adds a time/date interval to a date and then returns the date
ADDTIME Adds a time interval to a time/datetime and then returns the time/datetime
CURDATE Returns the current date
CURRENT_DATE Returns the current date
CURRENT_TIME Returns the current time
CURRENT_TIMESTAMP Returns the current date and time
CURTIME Returns the current time
DATE Extracts the date part from a datetime expression
DATEDIFF Returns the number of days between two date values
DATE_ADD Adds a time/date interval to a date and then returns the date
DATE_FORMAT Formats a date
DATE_SUB Subtracts a time/date interval from a date and then returns the date
DAY Returns the day of the month for a given date
DAYNAME Returns the weekday name for a given date
DAYOFMONTH Returns the day of the month for a given date
DAYOFWEEK Returns the weekday index for a given date
DAYOFYEAR Returns the day of the year for a given date
EXTRACT Extracts a part from a given date
FROM_DAYS Returns a date from a numeric datevalue
HOUR Returns the hour part for a given date
LAST_DAY Extracts the last day of the month for a given date
LOCALTIME Returns the current date and time
LOCALTIMESTAMP Returns the current date and time
MAKEDATE Creates and returns a date based on a year and a number of days value
MAKETIME Creates and returns a time based on an hour, minute, and second value
MICROSECOND Returns the microsecond part of a time/datetime
MINUTE Returns the minute part of a time/datetime
MONTH Returns the month part for a given date
MONTHNAME Returns the name of the month for a given date
NOW Returns the current date and time
PERIOD_ADD Adds a specified number of months to a period
PERIOD_DIFF Returns the difference between two periods
QUARTER Returns the quarter of the year for a given date value
SECOND Returns the seconds part of a time/datetime
SEC_TO_TIME Returns a time value based on the specified seconds
STR_TO_DATE Returns a date based on a string and a format
SUBDATE Subtracts a time/date interval from a date and then returns the date
SUBTIME Subtracts a time interval from a datetime and then returns the time/datetime
SYSDATE Returns the current date and time
TIME Extracts the time part from a given time/datetime
TIME_FORMAT Formats a time by a specified format
TIME_TO_SEC Converts a time value into seconds
TIMEDIFF Returns the difference between two time/datetime expressions
TIMESTAMP Returns a datetime value based on a date or datetime value
TO_DAYS Returns the number of days between a date and date «0000-00-00»
WEEK Returns the week number for a given date
WEEKDAY Returns the weekday number for a given date
WEEKOFYEAR Returns the week number for a given date
YEAR Returns the year part for a given date
YEARWEEK Returns the year and week number for a given date

Многочастные именаMultipart Names

Если не указано иное, все ссылки Transact-SQLTransact-SQL на имена объектов базы данных могут быть четырехсоставными именами, записываемыми в следующей форме.Unless specified otherwise, all Transact-SQLTransact-SQL references to the name of a database object can be a four-part name in the following form:

server_name…object_nameserver_name…object_name

| database_name..object_name| database_name..object_name

| schema_name.object_name| schema_name.object_name

| object_name| object_name

server_nameserver_nameУказывает имя связанного или удаленного сервера.Specifies a linked server name or remote server name.

database_namedatabase_nameУказывает имя базы данных SQL ServerSQL Server, если объект хранится на локальном экземпляре SQL ServerSQL Server.Specifies the name of a SQL ServerSQL Server database when the object resides in a local instance of SQL ServerSQL Server. Когда объект находится на связанном сервере, аргумент database_name указывает каталог OLE DB.When the object is in a linked server, database_name specifies an OLE DB catalog.

schema_nameschema_nameЕсли объект находится в базе данных SQL ServerSQL Server, указывает имя схемы, которая содержит объект.Specifies the name of the schema that contains the object if the object is in a SQL ServerSQL Server database. Когда объект находится на связанном сервере, аргумент schema_name указывает имя схемы OLE DB.When the object is in a linked server, schema_name specifies an OLE DB schema name.

object_nameobject_nameСсылается на имя объекта.Refers to the name of the object.

При ссылке на конкретный объект нет необходимости всякий раз указывать сервер, базу данных и схему — компонент Компонент SQL Server Database EngineSQL Server Database Engine попытается определить этот объект.When referencing a specific object, you don’t always have to specify the server, database, and schema for the Компонент SQL Server Database EngineSQL Server Database Engine to identify the object. Однако, если объект не удается найти, возвращается ошибка.However, if the object can’t be found, an error is returned.

Примечание

Чтобы избежать ошибок разрешения имен, при указании объекта области схемы рекомендуется указать имя схемы.To avoid name resolution errors, we recommend specifying the schema name whenever you specify a schema-scoped object.

Чтобы пропустить промежуточные узлы, для обозначения их позиций используйте точки.To omit intermediate nodes, use periods to indicate these positions. В следующей таблице показаны допустимые форматы имен объектов.The following table shows the valid formats of object names.

Формат ссылки на объектObject reference format ОписаниеDescription
server.database.schema.objectserver.database.schema.object Четырехчастное имя.Four-part name.
server.database..objectserver.database..object Имя схемы пропущено.Schema name is omitted.
server..schema.objectserver..schema.object Имя базы данных пропущено.Database name is omitted.
server…objectserver…object Имя базы данных и имя схемы пропущены.Database and schema name are omitted.
database.schema.objectdatabase.schema.object Имя сервера пропущено.Server name is omitted.
database..objectdatabase..object Имя сервера и имя схемы пропущены.Server and schema name are omitted.
schema.objectschema.object Имя сервера и имя базы данных пропущены.Server and database name are omitted.
objectobject Имена сервера, базы данных и схемы пропущены.Server, database, and schema name are omitted.

MySQL Advanced Functions

Function Description
BIN Returns a binary representation of a number
BINARY Converts a value to a binary string
CASE Goes through conditions and return a value when the first condition is
met
CAST Converts a value (of any type) into a specified datatype
COALESCE Returns the first non-null value in a list
CONNECTION_ID Returns the unique connection ID for the current connection
CONV Converts a number from one numeric base system to another
CONVERT Converts a value into the specified datatype or character set
CURRENT_USER Returns the user name and host name for the MySQL account that the server
used to authenticate the current client
DATABASE Returns the name of the current database
IF Returns a value if a condition is TRUE, or another value if a condition is FALSE
IFNULL Return a specified value if the expression is NULL, otherwise return the
expression
ISNULL Returns 1 or 0 depending on whether an expression is NULL
LAST_INSERT_ID Returns the AUTO_INCREMENT id of the last row that has been inserted or
updated in a table
NULLIF Compares two expressions and returns NULL if they are equal. Otherwise, the
first expression is returned
SESSION_USER Returns the current MySQL user name and host name
SYSTEM_USER Returns the current MySQL user name and host name
USER Returns the current MySQL user name and host name
VERSION Returns the current version of the MySQL database

❮ Previous
Next ❯

SQL References

SQL Keywords
ADD
ADD CONSTRAINT
ALTER
ALTER COLUMN
ALTER TABLE
ALL
AND
ANY
AS
ASC
BACKUP DATABASE
BETWEEN
CASE
CHECK
COLUMN
CONSTRAINT
CREATE
CREATE DATABASE
CREATE INDEX
CREATE OR REPLACE VIEW
CREATE TABLE
CREATE PROCEDURE
CREATE UNIQUE INDEX
CREATE VIEW
DATABASE
DEFAULT
DELETE
DESC
DISTINCT
DROP
DROP COLUMN
DROP CONSTRAINT
DROP DATABASE
DROP DEFAULT
DROP INDEX
DROP TABLE
DROP VIEW
EXEC
EXISTS
FOREIGN KEY
FROM
FULL OUTER JOIN
GROUP BY
HAVING
IN
INDEX
INNER JOIN
INSERT INTO
INSERT INTO SELECT
IS NULL
IS NOT NULL
JOIN
LEFT JOIN
LIKE
LIMIT
NOT
NOT NULL
OR
ORDER BY
OUTER JOIN
PRIMARY KEY
PROCEDURE
RIGHT JOIN
ROWNUM
SELECT
SELECT DISTINCT
SELECT INTO
SELECT TOP
SET
TABLE
TOP
TRUNCATE TABLE
UNION
UNION ALL
UNIQUE
UPDATE
VALUES
VIEW
WHERE

MySQL Functions
String Functions
ASCII
CHAR_LENGTH
CHARACTER_LENGTH
CONCAT
CONCAT_WS
FIELD
FIND_IN_SET
FORMAT
INSERT
INSTR
LCASE
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MID
POSITION
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SPACE
STRCMP
SUBSTR
SUBSTRING
SUBSTRING_INDEX
TRIM
UCASE
UPPER

Numeric Functions
ABS
ACOS
ASIN
ATAN
ATAN2
AVG
CEIL
CEILING
COS
COT
COUNT
DEGREES
DIV
EXP
FLOOR
GREATEST
LEAST
LN
LOG
LOG10
LOG2
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SUM
TAN
TRUNCATE

Date Functions
ADDDATE
ADDTIME
CURDATE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURTIME
DATE
DATEDIFF
DATE_ADD
DATE_FORMAT
DATE_SUB
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
EXTRACT
FROM_DAYS
HOUR
LAST_DAY
LOCALTIME
LOCALTIMESTAMP
MAKEDATE
MAKETIME
MICROSECOND
MINUTE
MONTH
MONTHNAME
NOW
PERIOD_ADD
PERIOD_DIFF
QUARTER
SECOND
SEC_TO_TIME
STR_TO_DATE
SUBDATE
SUBTIME
SYSDATE
TIME
TIME_FORMAT
TIME_TO_SEC
TIMEDIFF
TIMESTAMP
TO_DAYS
WEEK
WEEKDAY
WEEKOFYEAR
YEAR
YEARWEEK

Advanced Functions
BIN
BINARY
CASE
CAST
COALESCE
CONNECTION_ID
CONV
CONVERT
CURRENT_USER
DATABASE
IF
IFNULL
ISNULL
LAST_INSERT_ID
NULLIF
SESSION_USER
SYSTEM_USER
USER
VERSION

SQL Server Functions
String Functions
ASCII
CHAR
CHARINDEX
CONCAT
Concat with +
CONCAT_WS
DATALENGTH
DIFFERENCE
FORMAT
LEFT
LEN
LOWER
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICATE
REVERSE
RIGHT
RTRIM
SOUNDEX
SPACE
STR
STUFF
SUBSTRING
TRANSLATE
TRIM
UNICODE
UPPER

Numeric Functions
ABS
ACOS
ASIN
ATAN
ATN2
AVG
CEILING
COUNT
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SQUARE
SUM
TAN

Date Functions
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR

Advanced Functions
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME

MS Access Functions
String Functions
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase

Numeric Functions
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val

Date Functions
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year

Other Functions
CurrentUser
Environ
IsDate
IsNull
IsNumeric

SQL Quick Ref

Выражение CASE – условный оператор языка SQL

Первая форма: Вторая форма:
CASE
WHEN условие_1
THEN возвращаемое_значение_1

WHEN условие_N
THEN возвращаемое_значение_N

END

CASE проверяемое_значение
WHEN сравниваемое_значение_1
THEN возвращаемое_значение_1

WHEN сравниваемое_значение_N
THEN возвращаемое_значение_N

END

Разберем на примере первую форму CASE:

ID Name Salary SalaryTypeWithELSE SalaryTypeWithoutELSE
1000 Иванов И.И. 5000 ЗП >= 3000 ЗП >= 3000
1001 Петров П.П. 1500 ЗП < 2000 NULL
1002 Сидоров С.С. 2500 2000 <= ЗП < 3000 2000 <= ЗП < 3000
1003 Андреев А.А. 2000 2000 <= ЗП < 3000 2000 <= ЗП < 3000
1004 Николаев Н.Н. 1500 ЗП < 2000 NULL
1005 Александров А.А. 2000 2000 <= ЗП < 3000 2000 <= ЗП < 3000

Разберем на примере вторую форму CASE:

  • Сотрудникам ИТ-отдела выдать по 15% от ЗП;
  • Сотрудникам Бухгалтерии по 10% от ЗП;
  • Всем остальным по 5% от ЗП.
ID Name Salary DepartmentID NewYearBonusPercent BonusAmount
1000 Иванов И.И. 5000 1 5% 250
1001 Петров П.П. 1500 3 15% 225
1002 Сидоров С.С. 2500 2 10% 250
1003 Андреев А.А. 2000 3 15% 300
1004 Николаев Н.Н. 1500 3 15% 225
1005 Александров А.А. 2000 NULL 5% 100
  • Первым делом ЗП должны получить сотрудники у кого оклад меньше 2500
  • Те сотрудники у кого оклад больше или равен 2500, получают ЗП во вторую очередь
  • Внутри этих двух групп нужно упорядочить строки по ФИО (поле Name)
ID Name Salary
1005 Александров А.А. 2000
1003 Андреев А.А. 2000
1004 Николаев Н.Н. 1500
1001 Петров П.П. 1500
1000 Иванов И.И. 5000
1002 Сидоров С.С. 2500
ID Name Salary DepartmentID NewYearBonusPercent1 NewYearBonusPercent2
1000 Иванов И.И. 5000 1 5% 5%
1001 Петров П.П. 1500 3 15% 15%
1002 Сидоров С.С. 2500 2 10% 10%
1003 Андреев А.А. 2000 3 15% 15%
1004 Николаев Н.Н. 1500 3 15% 15%
1005 Александров А.А. 2000 NULL 5%

SQL References

SQL Keywords
ADD
ADD CONSTRAINT
ALTER
ALTER COLUMN
ALTER TABLE
ALL
AND
ANY
AS
ASC
BACKUP DATABASE
BETWEEN
CASE
CHECK
COLUMN
CONSTRAINT
CREATE
CREATE DATABASE
CREATE INDEX
CREATE OR REPLACE VIEW
CREATE TABLE
CREATE PROCEDURE
CREATE UNIQUE INDEX
CREATE VIEW
DATABASE
DEFAULT
DELETE
DESC
DISTINCT
DROP
DROP COLUMN
DROP CONSTRAINT
DROP DATABASE
DROP DEFAULT
DROP INDEX
DROP TABLE
DROP VIEW
EXEC
EXISTS
FOREIGN KEY
FROM
FULL OUTER JOIN
GROUP BY
HAVING
IN
INDEX
INNER JOIN
INSERT INTO
INSERT INTO SELECT
IS NULL
IS NOT NULL
JOIN
LEFT JOIN
LIKE
LIMIT
NOT
NOT NULL
OR
ORDER BY
OUTER JOIN
PRIMARY KEY
PROCEDURE
RIGHT JOIN
ROWNUM
SELECT
SELECT DISTINCT
SELECT INTO
SELECT TOP
SET
TABLE
TOP
TRUNCATE TABLE
UNION
UNION ALL
UNIQUE
UPDATE
VALUES
VIEW
WHERE

MySQL Functions
String Functions
ASCII
CHAR_LENGTH
CHARACTER_LENGTH
CONCAT
CONCAT_WS
FIELD
FIND_IN_SET
FORMAT
INSERT
INSTR
LCASE
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MID
POSITION
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SPACE
STRCMP
SUBSTR
SUBSTRING
SUBSTRING_INDEX
TRIM
UCASE
UPPER

Numeric Functions
ABS
ACOS
ASIN
ATAN
ATAN2
AVG
CEIL
CEILING
COS
COT
COUNT
DEGREES
DIV
EXP
FLOOR
GREATEST
LEAST
LN
LOG
LOG10
LOG2
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SUM
TAN
TRUNCATE

Date Functions
ADDDATE
ADDTIME
CURDATE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURTIME
DATE
DATEDIFF
DATE_ADD
DATE_FORMAT
DATE_SUB
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
EXTRACT
FROM_DAYS
HOUR
LAST_DAY
LOCALTIME
LOCALTIMESTAMP
MAKEDATE
MAKETIME
MICROSECOND
MINUTE
MONTH
MONTHNAME
NOW
PERIOD_ADD
PERIOD_DIFF
QUARTER
SECOND
SEC_TO_TIME
STR_TO_DATE
SUBDATE
SUBTIME
SYSDATE
TIME
TIME_FORMAT
TIME_TO_SEC
TIMEDIFF
TIMESTAMP
TO_DAYS
WEEK
WEEKDAY
WEEKOFYEAR
YEAR
YEARWEEK

Advanced Functions
BIN
BINARY
CASE
CAST
COALESCE
CONNECTION_ID
CONV
CONVERT
CURRENT_USER
DATABASE
IF
IFNULL
ISNULL
LAST_INSERT_ID
NULLIF
SESSION_USER
SYSTEM_USER
USER
VERSION

SQL Server Functions
String Functions
ASCII
CHAR
CHARINDEX
CONCAT
Concat with +
CONCAT_WS
DATALENGTH
DIFFERENCE
FORMAT
LEFT
LEN
LOWER
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICATE
REVERSE
RIGHT
RTRIM
SOUNDEX
SPACE
STR
STUFF
SUBSTRING
TRANSLATE
TRIM
UNICODE
UPPER

Numeric Functions
ABS
ACOS
ASIN
ATAN
ATN2
AVG
CEILING
COUNT
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SQUARE
SUM
TAN

Date Functions
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR

Advanced Functions
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME

MS Access Functions
String Functions
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase

Numeric Functions
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val

Date Functions
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year

Other Functions
CurrentUser
Environ
IsDate
IsNull
IsNumeric

SQL Quick Ref

Introduction

In real life, we make decisions based on the conditions. For example, look at the following conditions.

  • If I get a performance bonus this year, I will go for international vacation or else I’ll take a domestic vacation
  • If the weather becomes good, I will plan to go on a bike trip or else I won’t

In these examples, we decide as per the conditions. For example, if I get a bonus then only I will go for an international vacation else I will go for domestic vacations. We need to incorporate these conditions-based decisions in programming logic as well. SQL Server provides the capability to execute real-time programming logic using SQL IF Statement.

Поиск системных представленийFind system views

Чтобы найти системные таблицы, представления, функции и процедуры, см. ссылки в разделе Использование реляционных баз данных в документации по SQL.To find the system tables, views, functions, and procedures, see these links which are in the Using relational databases section of the SQL documentation.

  • Представления системного каталогаSystem catalog Views
  • Представления совместимости системыSystem compatibility views
  • Системные динамические административные представленияSystem dynamic management views
  • Системные функцииSystem functions
  • Системные представления информационной схемыSystem information schema views
  • Системные хранимые процедурыSystem stored procedures
  • Системные таблицыSystem tables

Функции CASE, IF, IFNULL, COALESCE

Последнее обновление: 26.05.2018

CASE

Функция CASE проверяет истинность набора условий и в зависимости от результата проверки может возвращать тот или иной результат.
Эта функция принимает следующую форму:

CASE
    WHEN условие_1 THEN результат_1
    WHEN условие_2 THEN результат_2
    .................................
    WHEN условие_N THEN условие_N
    
END

Возьмем для примера следующую таблицу Products:

CREATE TABLE Products
(
    Id INT AUTO_INCREMENT PRIMARY KEY,
    ProductName VARCHAR(30) NOT NULL,
    Manufacturer VARCHAR(20) NOT NULL,
    ProductCount INT DEFAULT 0,
    Price DECIMAL NOT NULL
);

Выполним запрос к этой таблице и используем функцию CASE:

SELECT ProductName, ProductCount, 
CASE
	WHEN ProductCount = 1 
		THEN 'Товар заканчивается'
	WHEN ProductCount = 2 
		THEN 'Мало товара'
	WHEN ProductCount = 3 
		THEN 'Есть в наличии'
	ELSE 'Много товара'
END AS Category
FROM Products;

Функция IF

Функция IF в зависимости от результата условного выражения возвращает одно из двух значений. Общая форма функции выглядит
следующим образом:

IF(условие, значение_1, значение_2)

Если условие, передаваемое в качестве первого параметра, верно, то возвращается первое значение, иначе возвращается второе значение. Например:

SELECT ProductName, Manufacturer,
    IF(ProductCount > 3, 'Много товара', 'Мало товара')
FROM Products;

IFNULL

Функция IFNULL проверяет значение некоторого выражения. Если оно равно NULL, то функция возвращает значение, которое передается в
качестве второго параметра:

IFNULL(выражение, значение)

Например, возьмем следующую таблицу

CREATE TABLE Clients
(
    Id INT AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR(20) NOT NULL,
    LastName VARCHAR(20) NOT NULL,
    Phone VARCHAR(20) NULL,
    Email VARCHAR(20) NULL
);
 
INSERT INTO Clients (FirstName, LastName, Phone, Email)
VALUES ('Tom', 'Smith', '+36436734', NULL),
('Bob', 'Simpson', NULL, NULL);

И применим при получении данных функцию IFNULL:

SELECT FirstName, LastName,
        IFNULL(Phone, 'не определено') AS Phone,
        IFNULL(Email, 'неизвестно') AS Email
FROM Clients;

COALESCE

Функция COALESCE принимает список значений и возвращает первое из них, которое не равно NULL:

COALESCE(выражение_1, выражение_2, выражение_N)

Например, выберем из таблицы Clients пользователей и в контактах у них определим либо телефон, либо электронный адрес, если они не равны NULL:

SELECT FirstName, LastName,
        COALESCE(Phone, Email, 'не определено') AS Contacts
FROM Clients;

То есть в данном случае возвращается телефон, если он определен. Если он не определен, то возвращается электронный адрес. Если и электронный адрес не определен, то возвращается строка «не определено».

Назад

MySQL Программирование

  • Типы данных MySQL
  • Алиасы в MySQL
  • Sequences (последовательности) MySQL
  • Литералы
  • Объявление переменных
  • Комментарии

MySQL Триггеры

Создать триггер MySQL
BEFORE INSERT AFTER INSERT
BEFORE UPDATE AFTER UPDATE
BEFORE DELETE AFTER DELETE
Удалить триггер MySQL
DROP TRIGGER

MySQL условия

AND логический оператор и
OR логический оператор или
AND и OR логический операторы и & или
LIKE сопоставляет данные с шаблоном
IN определяет, соответствует ли значение или список значений выражению в указанном наборе
NOT логический оператор не
IS NULL проверка значения NULL
IS NOT NULL проверка на значения NOT NULL
BETWEEN используется для получения значений в пределах диапазона
EXISTS используется в сочетании с подзапросом (subquery)
Операторы сравнения MySQL Такие как =, , , !=, >, >=,

Пример

Рассмотрим пример, который показывает, как использовать оператор CASE в MySQL. Во-первых, мы рассмотрим первый синтаксис для оператора CASE. Например:

MySQL

DELIMITER //

CREATE FUNCTION CostLevel ( monthly_value INT )
RETURNS varchar(20)

BEGIN

DECLARE cost_level varchar(20);

CASE monthly_value
WHEN 3000 THEN
SET cost_level = ‘Low Cost’;

WHEN 4000 THEN
SET cost_level = ‘Avg Cost’;

ELSE
SET cost_level = ‘High Cost’;
END CASE;

RETURN cost_level;

END; //

DELIMITER ;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

DELIMITER//
 

CREATE FUNCTIONCostLevel(monthly_valueINT)

RETURNSvarchar(20)
 
BEGIN
 

DECLAREcost_levelvarchar(20);
 

CASEmonthly_value

WHEN3000THEN

SETcost_level=’Low Cost’;
 

WHEN4000THEN

SETcost_level=’Avg Cost’;
 

ELSE

SETcost_level=’High Cost’;

END CASE;
 

RETURNcost_level;
 

END;//
 

DELIMITER;

В этом примере мы использовали первый синтаксис оператора CASE. Если значение month_value будет равно 3000, тогда для cost_level будет установлено значение ‘Low Cost’. Если значение month_value будет равно 4000, то для cost_level будет установлено значение ‘Avg Cost’. В противном случае cost_level достигнет ‘High Cost’. Теперь рассмотрим использование оператор CASE со вторым синтаксисом.

MySQL

DELIMITER //

CREATE FUNCTION CostLevel ( monthly_value INT )
RETURNS varchar(20)

BEGIN

DECLARE cost_level varchar(20);

CASE
WHEN monthly_value <= 3000 THEN
SET cost_level = ‘Low cost’;

WHEN monthly_value > 3000 AND monthly_value <= 6000 THEN
SET cost_level = ‘Avg cost’;

ELSE
SET cost_level = ‘High cost’;
END CASE;

RETURN cost_level;

END; //

DELIMITER ;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

DELIMITER//
 

CREATE FUNCTIONCostLevel(monthly_valueINT)

RETURNSvarchar(20)
 
BEGIN
 

DECLAREcost_levelvarchar(20);
 

CASE

WHENmonthly_value<=3000THEN

SETcost_level=’Low cost’;
 

WHENmonthly_value>3000ANDmonthly_value<=6000THEN

SETcost_level=’Avg cost’;
 

ELSE

SETcost_level=’High cost’;

END CASE;
 

RETURNcost_level;
 

END;//
 

DELIMITER;

В этом примере мы используем второй синтаксис для оператора CASE. В этом примере, если значение month_value меньше или равно 3000, тогда переменной cost_level будет присвоено ‘Low cost’. Если значение month_value больше 3000 и меньше или равно 6000, тогда cost_level будет присвоено значение ‘Avg cost’. В противном случае cost_level будет присвоено значение ‘High cost’.

Команда WHERE

Команда предназначена для создания условий (фильтров).

используется тогда, когда нужно вывести только те строки, которые соответствуют одному или нескольким условиям.

похожа на условный оператор , который используется во многих языках программирования для создания условий.

применяется только совместно с командами , и .

Синтаксис команды WHERE

SELECT column1, column1, … , columnN FROM table_name WHERE condition;

1 SELECTcolumn1,column1,…,columnNFROMtable_nameWHEREcondition;

Рассмотрим несколько примеров создания условий.

Выведем все книги, которые написал Лев Толстой.

Выведем все книги, доступное количество которых равно трём.

Подведем итоги

Конструкция/Блок Порядок выполнения Выполняемая функция
SELECT возвращаемые выражения 4 Возврат данных полученных запросом
FROM источник В нашем случае это пока все строки таблицы
WHERE условие выборки из источника 1 Отбираются только строки, проходящие по условию
GROUP BY выражения группировки 2 Создание групп по указанному выражению группировки. Расчет агрегированных значений по этим группам, используемых в SELECT либо HAVING блоках
HAVING фильтр по сгруппированным данным 3 Фильтрация, накладываемая на сгруппированные данные
ORDER BY выражение сортировки результата 5 Сортировка данных по указанному выражению
SalaryAmount
5000
SalaryAmount
2000
2500
5000
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector