Основы PL/pgSQL в СУБД PostgreSQL

Курс по изучению процедурного расширения PL/pgSQL в СУБД PostgreSQL. Основная концепция PL/pgSQL заключается в том, чтобы преодолеть ограничения языка SQL и предоставить разработчикам новые возможности для работы с базами данных.

Поступить на курс

Погружение в базы данных PostgreSQL

Данный курс является консолидацией теоретических основ и практических примеров, которые демонстрируют работу операторов и функций SQL в системе управления базами данных PostgreSQL.

Поступить на курс

JSON в PostgreSQL

Курс «JSON в PostgreSQL» познакомит вас с форматом JSON и покажет, как создавать и обрабатывать JSON-данные в СУБД PostgreSQL.

Поступить на курс

XML в PostgreSQL

Курс по изучению и практическому применению расширяемого языка разметки XML (eXtensible Markup Language) в системе управления базами данных PostgreSQL.

Поступить на курс

Оконные функции в PostgreSQL

Курс по изучению и практическому применению оконных функций в системе управления базами данных PostgreSQL.

Поступить на курс

Массивы в PostgreSQL

Курс по изучению и практическому применению массивов (array) в системе управления базами данных PostgreSQL.

Поступить на курс

 ›  ›  ›  › Оператор AS. Псевдонимы в SQL

Оператор AS. Псевдонимы в SQL

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

Для создания псевдонимов используется оператор AS.

Практический пример

В вашей таблице Users есть столбец first_middle_last_name, который содержит в себе полное имя пользователя. У данного столбца очень длинное имя, и есть использовать не очень удобно. Поэтому его можно просто переименовать в более короткое и понятное имя: например, в name_user

SELECT first_middle_last_name AS 'name_user' FROM Users;

Метки: , , .

Записи по теме

Комментарии к записи

  1. Мария:

    Зачем такие сложности в не нужных действиях? это только путает новичка зачем создавать копию таблицы?
    что бы в ней и запутаться?

  2. Роман:

    на основании данных из другой таблицы, при помощи AS создаю новый столбец, но не могу теперь к нему обратиться, чтоб проверить не одинаковые ли данные в этом столбце с другим столбцом(

    • Какую СУБД используете? Пришлите текст вашего запроса в комментарии ниже, посмотрим на него.

      • Роман:

        Весь запрос приводить не буду очень длинный, приведу кусочек:
        COALESCE(
        (
        SELECT TOP 1 ‘+7 (‘ + p.[Phone Code] + ‘) ‘ + LEFT(p.[Phone Number],3) + ‘-‘ + SUBSTRING(p.[Phone Number],4,2) + ‘-‘ + RIGHT(p.[Phone Number],2)
        FROM [trance FC`$Phone] p
        WHERE p.[Employee No_]=e.No_ AND p.[Default]=’1’ AND p.[Phone Number] »
        ),
        e.[Mobile Phone No_]
        ) AS [MobileNo_],
        CASE
        WHEN e.[Mobile Phone No_] = e.[MobileNo_] THEN »
        ELSE e.[Mobile Phone No_]
        END AS [MobilePhoneNo_],
        CASE
        WHEN e.[Mobile Phone No_] = e.[Home Phone No_] OR e.[Home Phone No_] = e.[MobileNo_] THEN »
        ELSE e.[Home Phone No_]
        END AS [HomePhoneNo_],

        $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
        $SqlConnection.ConnectionString = «Server=$SqlServer; Database=$SqlCatalog; Trusted_Connection=True;»
        $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
        $SqlCmd.CommandText = $sql
        $SqlCmd.Connection = $SqlConnection
        $DataAdapter = new-object System.Data.SqlClient.SqlDataAdapter $SqlCmd
        $Dataset = new-object System.Data.Dataset
        write-output $DataAdapter.Fill($Dataset) | Out-Null
        Тут выскакивает ошибка:
        Исключение при вызове «Fill» с «1» аргументами: «Incorrect syntax near the keyword ‘WHEN’.
        Incorrect syntax near ‘,’.»
        строка:1 знак:1
        + write-output $DataAdapter.Fill($Dataset) | Out-Null
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : SqlException

        • Посмотрел бегло запрос, ругается на конструкцию WHEN. И сразу можно выделить ошибку, когда у вас отрабатывает конструкция WHEN, должен выполниться блок THEN, а в этом блоке должно быть указано значение. В вашем случае это символ », и он строчный. Строчные символы необходимо заключать в кавычки.
          CASE
          WHEN e.[Mobile Phone No_] = e.[MobileNo_] THEN »
          ELSE e.[Mobile Phone No_]
          END AS [MobilePhoneNo_],

        • Роман:

          Прошу прощения, такая ошибка:
          Исключение при вызове «Fill» с «1» аргументами: «Invalid column name ‘MobileNo_’.
          Invalid column name ‘MobileNo_’.»
          строка:1 знак:1
          + write-output $DataAdapter.Fill($Dataset) | Out-Null
          + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
          + FullyQualifiedErrorId : SqlException

          • Эта ошибка указывает на некорректное имя столбца в таблице. Проверьте правильность имени столбца, если имя правильное, необходимо посмотреть полный запрос , как и когда определяется псевдоним для таблицы.

            • Роман:

              Псевдоним определяется так:
              COALESCE(
              (
              SELECT TOP 1 ‘+7 (‘ + p.[Phone Code] + ‘) ‘ + LEFT(p.[Phone Number],3) + ‘-‘ + SUBSTRING(p.[Phone Number],4,2) + ‘-‘ + RIGHT(p.[Phone Number],2)
              FROM [trance FC`$Phone] p
              WHERE p.[Employee No_]=e.No_ AND p.[Default]=’1’ AND p.[Phone Number] »
              ),
              e.[Mobile Phone No_]
              ) AS [MobileNo_],

            • Роман:

              *псевдоним для таблицы
              FROM [trance FC`$Employee] e

          • Роман:

            Пробовал делать так:
            CASE
            WHEN e.[Mobile Phone No_] = MobileNo_ THEN »
            ELSE e.[Mobile Phone No_]
            END AS [MobilePhoneNo_],
            Все равно такая же ошибка получается

Добавить комментарий

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