Математика

Физика

Химия

Биология

Техника и    технологии

 

 

 



если, то+если, то+....если, то=CASE
 

Теория. (Для понимания природы вещей.)

Одной из важнейших операций логики высказываний является импликация. В качестве знака для этой операции мы будем употреблять символ « ->».
Импликация определяется следующим образом:
Если а и b — два высказывания, то a ->b (читается «а имплицирует b») — сложное высказывание, которое истинно всегда, кроме того случая, когда а истинно, a b ложно.
Тем самым операция импликации описывается следующей таблицей истинности для импликации:
 

a\b

И Л

И

И Л

Л

И И


В импликации a -> b первый член «называется антецедентом, второй b — консеквентом.
Операция ->до некоторой степени соответствует союзу «если..., то ...».
Но следует сказать о том, что это соответствие весьма приблизительно.

Если мы будем рассматривать импликацию как соответствие союзу «если ..., то...», то согласно определению имеем, например,
«.Если дважды два — четыре, то трижды три — девять-» истинно;
«Если дважды два — пять, то трижды три — девять» истинно;
«Если дважды два — пять, то трижды три — восемь» истинно и только
«Если дважды два — четыре, то трижды три восемь» ложно.
Это еще согласуется в какой-то мере с общепринятым пониманием союза «если ..., то...».
Но возьмем для построения сложных высказываний «а ->b» такие простые высказывания:
«Сократ — грек» и;
«Наполеон — грек»л;
«Дважды два — четыре» и;
«Дважды два — пять»л.
Интерпретируя импликацию как союз «если ..., то...», получаем такие утверждения:
«Если Сократ — грек, то дважды два четыре» истинно;
«Если Наполеон — грек, то дважды два — четыре» истинно;
«Если Наполеон — грек, то дважды два — пять» истинно;
«Если Сократ — грек, то дважды два — пять» ложно.
Как видно, эти утверждения совсем не соответствуют привычному употреблению союза «если..., то...».
Причина такого несоответствия в основном следующая. Как это часто происходит в обычной речи, некоторые слова (а также словосочетания и целые предложения) имеют не одно, а много различных значений, зависящих от того, в какой связи данное языковое выражение употребляется. Так это происходит и с союзом «если ..., то...».
Анализом его различных значений занимались крупнейшие логики со времен Древней Греции и по сей день.
Отметим  для примеры такие употребления выражения «если а, то b».
а) «Если мы нагреваем некоторое тело, то оно (это тело) увеличивается в объеме».
Здесь «если ..., то...» описывает причинно-следственную связь между а и b
Мы нагреваем тело» — причина, тело увеличивается в объеме—следствие).
б) Несколько иной смысл союз «если ..., то...» имеет в следующем предложении:
«(Если все люди смертны и Сократ человек), то (Сократ смертен)»
Здесь «если а, то b» выражает отношение логического следования b из а: «Сократ — смертен» логически следует из посылки
«Все люди смертны и Сократ человек».

Несмотря на существенную разницу в понимании смысла союза «если ..., то...» в случае
а) (причинно-следственная связь) и б) (логическое следование), и в том и в другом случае в содержании «если ..., то...»
имеется одна общая черта: союз указывает на некоторую связь между содержанием высказывания а и высказывания b.

Логика высказываний обычно отвлекается от содержания простых высказываний и рассматривает только их значения истинности. Тем самым логические операции обычно не выражают связи между содержанием высказываний. Логическая операция, образующая из двух высказываний а и b сложное высказывание, определяет, таким образом, только отношение между значениями истинности высказываний а и b и значением истинности составленного из них сложного высказывания.

 Подробнее о связи импликации с союзом «если..., то...» и о различных видах импликации можно узнать из статьи «Импликация», напечатанной во II томе «Философской энциклопедии»(Еще найти надо Р.S).

CASE
Вычисляет список условий и возвращает один или несколько возможных результатов выражений.
Функция CASE имеет два формата:
 

  • Простая функция CASE для определения результата сравнивает выражение с набором простых выражений.

     
  • Поисковая функция CASE для определения результата вычисляет набор логических выражений.

    Синтаксис
Simple CASE function: 
CASE input_expression 
     WHEN when_expression THEN result_expression 
    [ ...n ] 
     [ 
    ELSE else_result_expression 
     ] 
END 
Searched CASE function:
CASE
     WHEN Boolean_expression THEN result_expression 
    [ ...n ] 
     [ 
    ELSE else_result_expression 
     ] 
END

Аргументы

 

input_expression
Выражение, полученное при использовании простого формата функции CASE. Аргумент input_expression представляет собой любое допустимое выражение.
WHEN when_expression
Простое выражение, с которым сравнивается аргумент input_expression при использовании простого формата функции CASE. Аргумент when_expression представляет собой любое допустимое выражение. Типы данных аргумента input_expression и каждого из выражений when_expression должны быть одинаковыми или неявно приводимыми друг к другу.
n
Заполнитель, показывающий, что может использоваться несколько выражений WHEN when_expression THEN result_expression или WHEN Boolean_expression THEN result_expression.
THEN result_expression
Значение, возвращаемое, если сравнение выражений input_expression и when_expression дает в результате TRUE или выражение Boolean_expression вычисляется в TRUE. Аргумент result expression представляет собой любое допустимое выражение.
ELSE else_result_expression
Это выражение, возвращаемое, если ни одна из операций сравнения не дает в результате TRUE. Если этот аргумент опущен и ни одна из операций сравнения не дает в результате TRUE, функция CASE возвращает NULL. Аргумент else_result_expression представляет собой любое допустимое выражение. Типы данных аргумента else_result_expression и любого из выражений result_expression должны быть одинаковыми или неявно приводимыми друг к другу.
WHEN Boolean_expression
Это логическое выражение, полученное при использовании поискового формата функции CASE. Аргумент Boolean_expression представляет собой любое допустимое логическое выражение.

Типы результата
Возвращает выражение с наивысшим приоритетом из набора выражений result_expressions и необязательного выражения else_result_expression.
Результирующие значения
 

Простая функция CASE:

  • Вычисляет выражение input_expression, затем в указанном порядке сравнивает значения выражений input_expression и when_expression для каждого предложения WHEN.

     
  • Возвращает выражение result_expression, соответствующее первому предложению WHEN, для которого операция сравнения input_expression = when_expression вычисляется в TRUE.

     
  • Если ни одна из операций input_expression = when_expression не вычисляется в TRUE, компонент SQL Server 2005 Database Engine возвращает выражение else_result_expression, если указано предложение ELSE, или значение NULL, если предложение ELSE не указано.
     

    Поисковая функция CASE

    • Вычисляет в указанном порядке выражения Boolean_expression для каждого предложения WHEN.

       
    • Возвращает выражение result_expression, соответствующее первому предложению WHEN, для которого выражение Boolean_expression вычисляется в TRUE.

       
    • Если ни одно выражение Boolean_expression не вычисляется в TRUE, компонент Database Engine возвращает выражение else_result_expression, если указано предложение ELSE, или значение NULL, если предложение ELSE не указано.

      Примеры
       

      А. Использование инструкции SELECT с простой функцией CASE
       

      При использовании в инструкции SELECT простая функция CASE позволяет выполнить только проверку на равенство; других проверок не выполняется.
      В следующем примере функция CASE используется для изменения способа отображения категорий линейки продуктов с целью сделать их более понятными.

      SQL Server 2005 Database Engine

    USE AdventureWorks;
    GO
    SELECT   ProductNumber, Category =
          CASE ProductLine
             WHEN 'R' THEN 'Road'
             WHEN 'M' THEN 'Mountain'
             WHEN 'T' THEN 'Touring'
             WHEN 'S' THEN 'Other sale items'
             ELSE 'Not for sale'
          END,
       Name
    FROM Production.Product
    ORDER BY ProductNumber;
    GO

    Б. Использование инструкции SELECT с простой и поисковой функцией CASE

    При использовании в инструкции SELECT поисковая функция CASE позволяет заменять значения в результирующем наборе данных в зависимости от результатов сравнения.
    В следующем примере отображается список цен в виде текстового комментария, основанного на диапазоне цен для продукта.


    SQL Server 2005 Database Engine

    USE AdventureWorks;
    GO
    SELECT   ProductNumber, Name, 'Price Range' =
          CASE
             WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
             WHEN ListPrice < 50 THEN 'Under $50'
             WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
             WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
             ELSE 'Over $1000'
          END
    FROM Production.Product
    ORDER BY ProductNumber ;


    :Предприятие 8.0

    SELECT Наименование AS Y1
    ,X AS Y2 ,
    CASE
    WHEN X =0 THEN "Mfg item - not for resale"
    WHEN X < 50 THEN "Under $50"
    WHEN X >= 50 AND X < 250 THEN "Under $250"
    WHEN X >= 250 AND X < 1000 THEN "Under $1000"

    ELSE "Over $1000"

    END AS Диапозон
    FROM
    Справочник.my1

Назад

Предложениями и замечаниями  обращаться по адресу- vova1001@yandex.ru

На главную страницу

Hosted by uCoz