UPPER: примеры (SQL)
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 для регистронезависимого поиска:
SELECT * FROM Products WHERE UPPER(ProductName) = UPPER('тестовый продукт');Применение в выражении CASE:
SELECT OrderID,
CASE WHEN UPPER(Status) = 'COMPLETED' THEN 'Завершен'
ELSE 'В обработке'
END AS StatusDescription
FROM Orders;Комбинирование с другими строковыми функциями:
SELECT UPPER(LEFT(LastName, 1)) + LOWER(SUBSTRING(LastName, 2, LEN(LastName))) AS FormattedName FROM Customers;FormattedName ------------- Иванов Петров
Использование в представлении (VIEW) для стандартизации данных:
CREATE VIEW vw_UniformCustomers AS
SELECT CustomerID, UPPER(TRIM(LastName)) AS StandardLastName, UPPER(Country) AS StandardCountry
FROM Customers;Работа с параметрами сортировки (collation):
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())ПРИМЕР