UPPER: примеры (SQL)

Примеры и описание функции UPPER в Microsoft SQL Server
Раздел: Строковые функции, Строковые
UPPER(character_expression): string

Функция UPPER в MS SQL Server

Функция UPPER в Microsoft SQL Server преобразует символы строкового выражения в верхний регистр. Эта функция применяется при стандартизации текстовых данных для сравнения или вывода, независимо от исходного регистра символов.

Синтаксис функции: UPPER ( character_expression ).

  • character_expression - обязательный аргумент. Это выражение символьных или двоичных данных. Это может быть константа, переменная или столбец. Аргумент может иметь любой тип данных, который может быть неявно преобразован в varchar, кроме text, ntext или image. Для других типов данных требуется явное преобразование с помощью функции CAST или CONVERT.
  • Возвращаемое значение: строка того же типа, что и входное выражение, где все символы в нижнем регистре преобразованы в верхний. Тип возвращаемого значения соответствует типу аргумента: varchar для ввода varchar, nvarchar для nvarchar. Функция не изменяет символы, уже находящиеся в верхнем регистре, цифры и специальные знаки.

Базовые примеры использования UPPER

Пример с строковой константой:

SELECT UPPER('Пример текста');
ПРИМЕР ТЕКСТА

Пример с данными из столбца:

SELECT LastName, UPPER(LastName) AS UpperLastName FROM Employees;
LastName | UpperLastName
---------|--------------
Иванов   | ИВАНОВ
Сидоров  | СИДОРОВ

Пример с выражением, содержащим специальные символы:

SELECT UPPER('email123@example.com');
EMAIL123@EXAMPLE.COM

Альтернативные функции в MS SQL

  • LOWER(character_expression) - выполняет обратное преобразование, переводя все символы строки в нижний регистр.
  • COLLATE - предложение для задания параметров сортировки, которое может временно менять правила сравнения регистров без изменения самих данных. Например, для регистронезависимого сравнения.

Функцию UPPER предпочтительнее использовать для приведения данных к единому формату перед сравнением или сохранением. LOWER применяется в аналогичных случаях, но для нижнего регистра. COLLATE больше подходит для одноразовых операций сравнения, когда преобразование самих данных не требуется.

Частые ошибки

  • Ожидание преобразования символов, не имеющих регистра (цифры, знаки препинания). Это не является ошибкой, функция их просто не изменяет.
  • Передача аргумента нестрокового типа без явного преобразования.
-- Ошибка: неправильный тип аргумента
SELECT UPPER(123);
Ошибка: Аргумент 1 функции UPPER имеет неверный тип данных.
-- Правильно: явное преобразование
SELECT UPPER(CAST(123 AS VARCHAR));
123

Использование с NULL-значениями возвращает NULL.

SELECT UPPER(NULL);
NULL

Изменения в последних версиях

В современных версиях MS SQL Server (начиная с 2008 и далее) функция UPPER не претерпела существенных изменений в синтаксисе или основном поведении. Основные улучшения касаются оптимизации производительности при работе с параметрами сортировки (collations) и расширенной поддержкой Unicode. В SQL Server 2012 и выше улучшена обработка Supplementary Characters (суррогатных пар) для параметров сортировки SC (Supplementary Character Support).

Расширенные примеры

Использование в условии WHERE для регистронезависимого поиска:

Пример sql
SELECT * FROM Products WHERE UPPER(ProductName) = UPPER('тестовый продукт');

Применение в выражении CASE:

Пример sql
SELECT OrderID,
       CASE WHEN UPPER(Status) = 'COMPLETED' THEN 'Завершен'
            ELSE 'В обработке'
       END AS StatusDescription
FROM Orders;

Комбинирование с другими строковыми функциями:

Пример sql
SELECT UPPER(LEFT(LastName, 1)) + LOWER(SUBSTRING(LastName, 2, LEN(LastName))) AS FormattedName FROM Customers;
FormattedName
-------------
Иванов
Петров

Использование в представлении (VIEW) для стандартизации данных:

Пример sql
CREATE VIEW vw_UniformCustomers AS
SELECT CustomerID, UPPER(TRIM(LastName)) AS StandardLastName, UPPER(Country) AS StandardCountry
FROM Customers;

Работа с параметрами сортировки (collation):

Пример sql
SELECT UPPER('straße' COLLATE Latin1_General_CS_AS) AS Result;
STRASSE

Обратите внимание: для некоторых локалей (например, Turkish) преобразование регистра может отличаться от ожидаемого (I -> ı, а не i).

Функции в других СУБД и языках

  • MySQL: UPPER() и синоним UCASE(). Работает аналогично MS SQL.
  • Oracle: UPPER(). Имеет дополнительный параметр NLS_SORT для учета национальных настроек.
  • PostgreSQL: UPPER(). Есть функция INITCAP() для преобразования первых букв слов в верхний регистр.
  • SQLite: UPPER(), но работа зависит от настроенной ICU-библиотеки для поддержки Unicode.
  • Python: Метод строки str.upper().
-- PostgreSQL: INITCAP
SELECT INITCAP('hello world');
Hello World
# Python
print("пример".upper())
ПРИМЕР

MS SQL UPPER function comments

En
UPPER Returns a character expression with lowercase character data converted to uppercase