#разбор_кода
Найдите идентификаторы продуктов, которые одновременно содержат мало жира и подлежат переработке.
Таблица с идентификаторами - 1 фото.
Пример кода с решением - 2 фото.
Интуиция, лежащая в основе приведенного решения, заключается в использовании простого SQL-запроса для фильтрации строк в таблице Products на основе заданных условий. Запрос выбирает столбец product_id из таблицы, где low_fats - 'Y' и recyclable - 'Y'.
Объяснение:
1. Запрос начинается с указания условия SELECT для получения столбца product_id.
2. В предложении FROM указывается имя таблицы "Продукты", из которой будут выбраны данные.
3. Предложение WHERE используется для применения условий фильтрации. Он проверяет, что значение low_fats равно 'Y' (указывает на низкое содержание жира), а значение recyclable равно 'Y' (указывает на возможность переработки).
4. Результатом запроса будут значения product_id, удовлетворяющие заданным условиям.
Найдите идентификаторы продуктов, которые одновременно содержат мало жира и подлежат переработке.
Таблица с идентификаторами - 1 фото.
Пример кода с решением - 2 фото.
Интуиция, лежащая в основе приведенного решения, заключается в использовании простого SQL-запроса для фильтрации строк в таблице Products на основе заданных условий. Запрос выбирает столбец product_id из таблицы, где low_fats - 'Y' и recyclable - 'Y'.
Объяснение:
1. Запрос начинается с указания условия SELECT для получения столбца product_id.
2. В предложении FROM указывается имя таблицы "Продукты", из которой будут выбраны данные.
3. Предложение WHERE используется для применения условий фильтрации. Он проверяет, что значение low_fats равно 'Y' (указывает на низкое содержание жира), а значение recyclable равно 'Y' (указывает на возможность переработки).
4. Результатом запроса будут значения product_id, удовлетворяющие заданным условиям.
👍4
Суррогатные ключи
В базах данных ключ - это поле или набор полей, которые однозначно идентифицируют запись в таблице. Суррогатный ключ - это ключ, который используется вместо естественного ключа, который может быть слишком сложным или неустойчивым для использования в качестве ключа.
Например, в таблице базы данных, содержащей информацию о сотрудниках, естественный ключ может быть сочетанием имени, фамилии и даты рождения. Однако, если имя или фамилия сотрудника изменятся, ключ также должен быть изменен, что может привести к проблемам с целостностью данных. В этом случае использование суррогатного ключа, такого как уникальный идентификатор, может быть более надежным.
Разбор примера с фото:
В этом примере, id является суррогатным ключом, который генерируется автоматически при каждом вставке новой записи. Он гарантирует уникальность каждой записи и не зависит от других полей таблицы.
Существует несколько преимуществ использования суррогатных ключей в SQL:
1. Простота и удобство в использовании.
2. Улучшение производительности при выполнении операций вставки и обновления.
3. Улучшение целостности данных, так как суррогатный ключ не зависит от других полей таблицы.
4. Удобство для программистов при написании запросов, так как они могут использовать суррогатный ключ вместо нескольких полей для поиска конкретной записи в таблице.
В базах данных ключ - это поле или набор полей, которые однозначно идентифицируют запись в таблице. Суррогатный ключ - это ключ, который используется вместо естественного ключа, который может быть слишком сложным или неустойчивым для использования в качестве ключа.
Например, в таблице базы данных, содержащей информацию о сотрудниках, естественный ключ может быть сочетанием имени, фамилии и даты рождения. Однако, если имя или фамилия сотрудника изменятся, ключ также должен быть изменен, что может привести к проблемам с целостностью данных. В этом случае использование суррогатного ключа, такого как уникальный идентификатор, может быть более надежным.
Разбор примера с фото:
В этом примере, id является суррогатным ключом, который генерируется автоматически при каждом вставке новой записи. Он гарантирует уникальность каждой записи и не зависит от других полей таблицы.
Существует несколько преимуществ использования суррогатных ключей в SQL:
1. Простота и удобство в использовании.
2. Улучшение производительности при выполнении операций вставки и обновления.
3. Улучшение целостности данных, так как суррогатный ключ не зависит от других полей таблицы.
4. Удобство для программистов при написании запросов, так как они могут использовать суррогатный ключ вместо нескольких полей для поиска конкретной записи в таблице.
👍5🔥1
Особенности реализации функции CONCAT в разных языках и СУБД sql
Функция CONCAT используется для объединения строк в SQL. Однако, ее реализация может отличаться в разных языках и СУБД. Рассмотрим некоторые из них:
🟠 MySQL
Функция CONCAT может принимать любое количество аргументов. Она объединяет строки в порядке их передачи в функцию. Если хотя бы один из аргументов NULL, то результатом будет NULL.
🟠 PostgreSQL
Функция CONCAT эквивалентна оператору ||, который также используется для объединения строк. Она может принимать только два аргумента. Если хотя бы один аргумент NULL, то результатом будет NULL.
🟠 Oracle
Функция CONCAT эквивалентна оператору ||, который также используется для объединения строк. Она может принимать только два аргумента. Если хотя бы один аргумент NULL, то результатом будет NULL.
🟠 SQL Server
Функция CONCAT может принимать любое количество аргументов и объединяет строки в порядке их передачи в функцию. Если хотя бы один из аргументов NULL, то результатом будет NULL.
🟠 Общие рекомендации
При использовании функции CONCAT рекомендуется проверять аргументы на NULL и использовать функцию COALESCE для замены NULL на пустую строку.
Функция CONCAT используется для объединения строк в SQL. Однако, ее реализация может отличаться в разных языках и СУБД. Рассмотрим некоторые из них:
Функция CONCAT может принимать любое количество аргументов. Она объединяет строки в порядке их передачи в функцию. Если хотя бы один из аргументов NULL, то результатом будет NULL.
Функция CONCAT эквивалентна оператору ||, который также используется для объединения строк. Она может принимать только два аргумента. Если хотя бы один аргумент NULL, то результатом будет NULL.
Функция CONCAT эквивалентна оператору ||, который также используется для объединения строк. Она может принимать только два аргумента. Если хотя бы один аргумент NULL, то результатом будет NULL.
Функция CONCAT может принимать любое количество аргументов и объединяет строки в порядке их передачи в функцию. Если хотя бы один из аргументов NULL, то результатом будет NULL.
При использовании функции CONCAT рекомендуется проверять аргументы на NULL и использовать функцию COALESCE для замены NULL на пустую строку.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2😱2
Некоррелированный подзапрос
Некоррелированный подзапрос в SQL - это подзапрос, который может быть выполнен независимо от внешнего запроса. Он возвращает результат, который используется во внешнем запросе для выполнения операций.
Ключевым моментом в некоррелированном подзапросе является то, что он выполняется только один раз и его результат сохраняется в памяти до тех пор, пока он не будет использован во внешнем запросе.
Использование некоррелированных подзапросов может улучшить производительность запросов, так как они могут быть выполнены быстрее, чем коррелированные подзапросы, которые зависят от внешнего запроса и выполняются для каждой строки во внешнем запросе.
Некоррелированный подзапрос в SQL - это подзапрос, который может быть выполнен независимо от внешнего запроса. Он возвращает результат, который используется во внешнем запросе для выполнения операций.
Ключевым моментом в некоррелированном подзапросе является то, что он выполняется только один раз и его результат сохраняется в памяти до тех пор, пока он не будет использован во внешнем запросе.
Использование некоррелированных подзапросов может улучшить производительность запросов, так как они могут быть выполнены быстрее, чем коррелированные подзапросы, которые зависят от внешнего запроса и выполняются для каждой строки во внешнем запросе.
👍11❤1
Ранжирующая функция DENSE_RANK()
- это ранжирующая функция в SQL, которая используется для нумерации строк в результате запроса в соответствии с заданным порядком.
Она работает очень похоже на функцию RANK(), но в отличие от нее, DENSE_RANK() не пропускает номера ранжируемых строк, если они имеют одинаковые значения. Например, если две строки имеют одинаковое значение для ранжирующего параметра, то они получат одинаковый номер в ранжированном результате.
В запросе с фото мы выбираем имена и оценки студентов из таблицы students и ранжируем их по убыванию оценок с помощью DENSE_RANK(). Результат будет содержать три столбца: name, score и rank.
- это ранжирующая функция в SQL, которая используется для нумерации строк в результате запроса в соответствии с заданным порядком.
Она работает очень похоже на функцию RANK(), но в отличие от нее, DENSE_RANK() не пропускает номера ранжируемых строк, если они имеют одинаковые значения. Например, если две строки имеют одинаковое значение для ранжирующего параметра, то они получат одинаковый номер в ранжированном результате.
В запросе с фото мы выбираем имена и оценки студентов из таблицы students и ранжируем их по убыванию оценок с помощью DENSE_RANK(). Результат будет содержать три столбца: name, score и rank.
👍11
#Вопросы_с_собеседования
Что делает команда с фото?
Данная команда SQL используется для получения информации о свободном месте в базе данных.
Пояснение:
Команда выполняет выборку из системной таблицы sys.dm_db_file_space_usage, которая содержит информацию о распределении страниц в файлах базы данных.
Результатом выполнения команды является две колонки:
- free pages - количество свободных страниц в базе данных
- free space in MB - количество свободного места в базе данных, выраженное в мегабайтах.
Результат выполнения данной команды может выглядеть следующим образом:
free pages - 240
free space in MB - 1.875
Что делает команда с фото?
Данная команда SQL используется для получения информации о свободном месте в базе данных.
Пояснение:
Команда выполняет выборку из системной таблицы sys.dm_db_file_space_usage, которая содержит информацию о распределении страниц в файлах базы данных.
Результатом выполнения команды является две колонки:
- free pages - количество свободных страниц в базе данных
- free space in MB - количество свободного места в базе данных, выраженное в мегабайтах.
Результат выполнения данной команды может выглядеть следующим образом:
free pages - 240
free space in MB - 1.875
👍9
MySQL: MONTHNAME
Функция MONTHNAME в MySQL используется для извлечения названия месяца из даты. Она принимает аргументом дату и возвращает название месяца на текущем языке соответствующей локали.
Синтаксис - MONTHNAME(date)
где date - это дата в формате yyyy-mm-dd или в формате yyyy-mm-dd hh:mm:ss.
Функция MONTHNAME может быть полезна при создании отчетов и графиков, когда вам нужно отобразить данные по месяцам. Она может также использоваться для сортировки данных по месяцам.
Вы можете использовать эту функцию в запросах SELECT, ORDER BY и других операторах SQL.
Функция MONTHNAME в MySQL используется для извлечения названия месяца из даты. Она принимает аргументом дату и возвращает название месяца на текущем языке соответствующей локали.
Синтаксис - MONTHNAME(date)
где date - это дата в формате yyyy-mm-dd или в формате yyyy-mm-dd hh:mm:ss.
Функция MONTHNAME может быть полезна при создании отчетов и графиков, когда вам нужно отобразить данные по месяцам. Она может также использоваться для сортировки данных по месяцам.
Вы можете использовать эту функцию в запросах SELECT, ORDER BY и других операторах SQL.
👍5🔥2
#вопросы_с_собеседований
Как вы используете функции LAG и LEAD в SQL? Можете ли вы привести пример их использования?
Функции LAG() и LEAD() – это оконные функции в SQL, которые позволяют сравнивать значения в строке со значениями в предыдущей или следующей строке соответственно. Они полезны для вычисления текущих итогов или для сравнения значений в таблице со значениями в предыдущей или последующей строке.
Функция LAG() принимает два аргумента: столбец, который нужно вернуть, и количество строк, которые нужно вернуть.
Функция LEAD() работает аналогичным образом, но принимает значения, находящиеся после текущей строки.
В примерах в обоих случаях мы используем функции LAG и LEAD в сочетании с функцией OVER для указания порядка строк в окне.
Как вы используете функции LAG и LEAD в SQL? Можете ли вы привести пример их использования?
Функции LAG() и LEAD() – это оконные функции в SQL, которые позволяют сравнивать значения в строке со значениями в предыдущей или следующей строке соответственно. Они полезны для вычисления текущих итогов или для сравнения значений в таблице со значениями в предыдущей или последующей строке.
Функция LAG() принимает два аргумента: столбец, который нужно вернуть, и количество строк, которые нужно вернуть.
Функция LEAD() работает аналогичным образом, но принимает значения, находящиеся после текущей строки.
В примерах в обоих случаях мы используем функции LAG и LEAD в сочетании с функцией OVER для указания порядка строк в окне.
👍10🔥1
#вопросы_с_собеседований
Почему SELECT * и SELECT column возвращает строки в разном порядке?
Выражение SELECT * возвращает все столбцы таблицы в том порядке, в котором они были созданы. Однако, если вы используете выражение SELECT column, то возвращаемые строки будут отсортированы по значению столбца, указанного в команде ORDER BY.
Это происходит потому, что в первом случае MySQL не знает, какую сортировку применять к строкам, и возвращает их в порядке, в котором они были добавлены в таблицу. В случае с SELECT column, MySQL сортирует строки по значению столбца, указанного в команде ORDER BY.
Чтобы получить строки в определенном порядке при использовании SELECT *, вы должны указать порядок с помощью команды ORDER BY.
Почему SELECT * и SELECT column возвращает строки в разном порядке?
Выражение SELECT * возвращает все столбцы таблицы в том порядке, в котором они были созданы. Однако, если вы используете выражение SELECT column, то возвращаемые строки будут отсортированы по значению столбца, указанного в команде ORDER BY.
Это происходит потому, что в первом случае MySQL не знает, какую сортировку применять к строкам, и возвращает их в порядке, в котором они были добавлены в таблицу. В случае с SELECT column, MySQL сортирует строки по значению столбца, указанного в команде ORDER BY.
Чтобы получить строки в определенном порядке при использовании SELECT *, вы должны указать порядок с помощью команды ORDER BY.
🔥5👍3
Какой запрос позволит получить всех пользователей так, чтобы новые оказались в начале? Дата регистрации - "reg_date".
Anonymous Quiz
61%
SELECT * FROM users ORDER BY reg_date DESC
9%
SELECT * FROM users SORT BY reg_date DESC
20%
SELECT * FROM users ORDER BY reg_date ASC
3%
SELECT * FROM users ORDER ASC BY reg_date
3%
SELECT * FROM users SORT(reg_date)
3%
Посмотреть ответ
👍11❤3
Функция DEGREES - SQL Server
Функция DEGREES используется для преобразования значения в радианах в значение в градусах. Эта функция принимает один аргумент, который должен быть числом в радианах, и возвращает это значение в градусах.
Синтаксис:
- DEGREES ( numeric_expression )
Параметры:
- numeric_expression - значение в радианах, которое нужно преобразовать в градусы. Это значение должно быть числом.
Функция DEGREES используется для преобразования значения в радианах в значение в градусах. Эта функция принимает один аргумент, который должен быть числом в радианах, и возвращает это значение в градусах.
Синтаксис:
- DEGREES ( numeric_expression )
Параметры:
- numeric_expression - значение в радианах, которое нужно преобразовать в градусы. Это значение должно быть числом.
👍11
Функции ISDATE() - SQL Server
Функция ISDATE() используется для проверки, является ли выражение допустимой датой или нет. Функция возвращает 1, если выражение является допустимой датой, и 0, если не является.
Синтаксис функции ISDATE(): ISDATE ( expression )
- expression: выражение, которое необходимо проверить. Может быть любым типом данных, который может быть преобразован в тип данных дата/время.
Однако при использовании функции ISDATE() нужно учитывать, что она не является полностью надежной и может допускать ошибки при проверке даты. Например, функция не сможет обнаружить ошибку в дате "@", так как такая дата не существует.
Функция ISDATE() используется для проверки, является ли выражение допустимой датой или нет. Функция возвращает 1, если выражение является допустимой датой, и 0, если не является.
Синтаксис функции ISDATE(): ISDATE ( expression )
- expression: выражение, которое необходимо проверить. Может быть любым типом данных, который может быть преобразован в тип данных дата/время.
Однако при использовании функции ISDATE() нужно учитывать, что она не является полностью надежной и может допускать ошибки при проверке даты. Например, функция не сможет обнаружить ошибку в дате "@", так как такая дата не существует.
👍3
Какие поля из таблицы обязательно перечислять в INSERT для вставки данных?
Anonymous Quiz
20%
Конечно, все!
16%
Только те, у которых нет DEFAULT-значения
47%
Те, у которых нет DEFAULT-значения и которые не имеют атрибута auto_increment
17%
Все поля имеют негласное DEFAULT-значение, обязательных полей в SQL нет
👍10❤2
SHRINK в MSSQL
SHRINK - это операция сжатия базы данных в Microsoft SQL Server. Она используется для освобождения места на жестком диске.
Существует два вида операции SHRINK:
- SHRINK DATABASE - сжатие всей базы данных
- SHRINK FILE - сжатие отдельных файлов базы данных
Для выполнения операции SHRINK с помощью SQL Server Management Studio (SSMS), нужно выполнить следующие шаги:
1. Подключиться к экземпляру SQL Server в SSMS
2. Выбрать нужную базу данных
3. Нажать правой кнопкой мыши на базе данных и выбрать "Tasks" -> "Shrink" -> "Database" (или "File", если нужно сжать только отдельный файл)
4. В появившемся диалоговом окне выбрать опции сжатия и нажать "OK"
Опции сжатия, доступные в диалоговом окне:
- Release unused space - освободить неиспользуемое пространство (рекомендуется)
- Reorganize pages before releasing unused space - переорганизовать страницы перед освобождением неиспользуемого пространства (улучшает производительность индексов)
- Shrink file to - сжать файл до указанного размера (в МБ)
Также, операцию SHRINK можно выполнить с помощью T-SQL команды:
- SHRINKDATABASE - для сжатия всей базы данных
- SHRINKFILE - для сжатия отдельного файла
SHRINK - это операция сжатия базы данных в Microsoft SQL Server. Она используется для освобождения места на жестком диске.
Существует два вида операции SHRINK:
- SHRINK DATABASE - сжатие всей базы данных
- SHRINK FILE - сжатие отдельных файлов базы данных
Для выполнения операции SHRINK с помощью SQL Server Management Studio (SSMS), нужно выполнить следующие шаги:
1. Подключиться к экземпляру SQL Server в SSMS
2. Выбрать нужную базу данных
3. Нажать правой кнопкой мыши на базе данных и выбрать "Tasks" -> "Shrink" -> "Database" (или "File", если нужно сжать только отдельный файл)
4. В появившемся диалоговом окне выбрать опции сжатия и нажать "OK"
Опции сжатия, доступные в диалоговом окне:
- Release unused space - освободить неиспользуемое пространство (рекомендуется)
- Reorganize pages before releasing unused space - переорганизовать страницы перед освобождением неиспользуемого пространства (улучшает производительность индексов)
- Shrink file to - сжать файл до указанного размера (в МБ)
Также, операцию SHRINK можно выполнить с помощью T-SQL команды:
- SHRINKDATABASE - для сжатия всей базы данных
- SHRINKFILE - для сжатия отдельного файла
👍5🔥1
Полное присоединение в SQL Server
Полное присоединение (Full Outer Join) — это операция соединения, которая возвращает все строки из обеих таблиц, которые соответствуют заданному условию. Если записи в одной из таблиц отсутствуют, то вместо значений будут NULL.
В SQL Server полное присоединение выполняется с использованием ключевого слова FULL OUTER JOIN.
При использовании полного присоединения важно помнить, что оно может привести к большому количеству дублирующихся строк в результирующей таблице. Поэтому перед применением этой операции следует тщательно продумать условия соединения и проверить результирующий набор данных.
Полное присоединение (Full Outer Join) — это операция соединения, которая возвращает все строки из обеих таблиц, которые соответствуют заданному условию. Если записи в одной из таблиц отсутствуют, то вместо значений будут NULL.
В SQL Server полное присоединение выполняется с использованием ключевого слова FULL OUTER JOIN.
При использовании полного присоединения важно помнить, что оно может привести к большому количеству дублирующихся строк в результирующей таблице. Поэтому перед применением этой операции следует тщательно продумать условия соединения и проверить результирующий набор данных.
👍6
Показ N-числа наиболее затратных запросов
Это предложение с фото, кажущееся сложным, но таким не являющееся, демонстрирует типы предложений, выполнение которых занимает у движка базы данных особенно много времени. Поэтому нам пригодится умение выявлять инструкции SQL, требующие оптимизации.
Для того, чтобы показать наиболее затратные запросы, нужно использовать SQL-запрос с фото
Запрос с фото позволит вывести наиболее затратные запросы, сгруппированные по названию запроса, количеству выполнений, общему времени выполнения на CPU в секундах, среднему времени выполнения на CPU в миллисекундах, плану запроса и названию базы данных.
Это предложение с фото, кажущееся сложным, но таким не являющееся, демонстрирует типы предложений, выполнение которых занимает у движка базы данных особенно много времени. Поэтому нам пригодится умение выявлять инструкции SQL, требующие оптимизации.
Для того, чтобы показать наиболее затратные запросы, нужно использовать SQL-запрос с фото
Запрос с фото позволит вывести наиболее затратные запросы, сгруппированные по названию запроса, количеству выполнений, общему времени выполнения на CPU в секундах, среднему времени выполнения на CPU в миллисекундах, плану запроса и названию базы данных.
👍10
Найдите всех авторов, которые просмотрели хотя бы одну из своих статей.
Верните таблицу результатов, отсортированную по id в порядке возрастания.
Решение:
Запрос направлен на получение списка идентификаторов авторов из таблицы «Просмотры», где идентификаторы автора и зрителя совпадают. Использование ключевого слова DISTINCT гарантирует, что возвращаются только уникальные идентификаторы авторов.
Подход:
1. Запрос выбирает идентификатор автора как «id» из таблицы «Views».
2. Он применяет условие с использованием предложения WHERE для фильтрации строк, в которых идентификатор автора равен идентификатору зрителя.
3. Ключевое слово DISTINCT используется для удаления дубликатов и возврата только уникальных идентификаторов авторов.
4. Результат упорядочивается в порядке возрастания на основе идентификатора автора с использованием предложения ORDER BY.
Верните таблицу результатов, отсортированную по id в порядке возрастания.
Решение:
Запрос направлен на получение списка идентификаторов авторов из таблицы «Просмотры», где идентификаторы автора и зрителя совпадают. Использование ключевого слова DISTINCT гарантирует, что возвращаются только уникальные идентификаторы авторов.
Подход:
1. Запрос выбирает идентификатор автора как «id» из таблицы «Views».
2. Он применяет условие с использованием предложения WHERE для фильтрации строк, в которых идентификатор автора равен идентификатору зрителя.
3. Ключевое слово DISTINCT используется для удаления дубликатов и возврата только уникальных идентификаторов авторов.
4. Результат упорядочивается в порядке возрастания на основе идентификатора автора с использованием предложения ORDER BY.
👍6❤1
IF, IFNULL и NULLIF в MySQL
1. Функция IF позволяет выполнить операцию, основываясь на том, является ли выражение истинным или ложным.
Синтаксис функции IF выглядит так: IF(expr1, expr2, expr3)
где expr1 - это условие, которое нужно проверить, expr2 - значение, которое возвращается, если условие истинно, а expr3 - значение, которое возвращается, если условие ложно.
2. Функция IFNULL возвращает второй аргумент, если первый аргумент равен NULL. Если первый аргумент не является NULL, то он будет возвращен.
Синтаксис функции IFNULL выглядит так: IFNULL(expr1, expr2)
где expr1 - это значение, которое нужно проверить на NULL, а expr2 - значение, которое возвращается, если expr1 равен NULL
3. Функция NULLIF используется для сравнения двух выражений. Она возвращает NULL, если выражения равны, иначе возвращает первое выражение.
Синтаксис функции NULLIF выглядит так: NULLIF(expr1, expr2)
где expr1 и expr2 - это выражения, которые нужно сравнить. Если expr1 равно expr2, то функция вернет NULL, иначе вернется значение expr1.
1. Функция IF позволяет выполнить операцию, основываясь на том, является ли выражение истинным или ложным.
Синтаксис функции IF выглядит так: IF(expr1, expr2, expr3)
где expr1 - это условие, которое нужно проверить, expr2 - значение, которое возвращается, если условие истинно, а expr3 - значение, которое возвращается, если условие ложно.
2. Функция IFNULL возвращает второй аргумент, если первый аргумент равен NULL. Если первый аргумент не является NULL, то он будет возвращен.
Синтаксис функции IFNULL выглядит так: IFNULL(expr1, expr2)
где expr1 - это значение, которое нужно проверить на NULL, а expr2 - значение, которое возвращается, если expr1 равен NULL
3. Функция NULLIF используется для сравнения двух выражений. Она возвращает NULL, если выражения равны, иначе возвращает первое выражение.
Синтаксис функции NULLIF выглядит так: NULLIF(expr1, expr2)
где expr1 и expr2 - это выражения, которые нужно сравнить. Если expr1 равно expr2, то функция вернет NULL, иначе вернется значение expr1.
👍5