Функции для текста
Функции работают и с текстом. UPPER(x) записывает текст заглавными буквами, LOWER(x) — строчными, а LENGTH(x) сообщает, сколько в нём символов:
SELECT name, UPPER(name) AS upper_name, LENGTH(name) AS characters
FROM customers
LIMIT 3;| name | upper_name | characters |
|---|---|---|
| Emma Clark | EMMA CLARK | 10 |
| Liam Turner | LIAM TURNER | 11 |
| Olivia Brown | OLIVIA BROWN | 12 |
LENGTH считает все символы: буквы, цифры, пробелы и знаки препинания. В Emma Clark их 10, включая пробел. А LOWER('Moon Farm') даёт moon farm.
Где это пригодится? Баннер на главной странице магазина показывает названия заглавными буквами, форма проверяет, что имя не слишком длинное для наклейки на посылку, а LOWER помогает сравнивать тексты, когда неизвестно, как они записаны: LOWER(genre) — это rpg, написано ли в таблице RPG, Rpg или rpg. Вы будете использовать это в WHERE дальше в этом уроке.
Функции не изменяют данные в таблице, а только то, что показывает запрос. После запроса выше в таблице по-прежнему написано Emma Clark, как и раньше. Так со всеми запросами: они только читают данные.
А NULL остаётся NULL: длина отсутствующего комментария — не 0, а NULL. Если у функции нет значения, ей не с чем работать, и она тоже не возвращает значения. Как заменять NULL чем-то другим, вы скоро узнаете.
Типичная ошибка: название столбца в кавычках. UPPER('title') не работает со столбцом title, а записывает заглавными буквами текст 'title', так что в каждой строке будет TITLE. Текст в одинарных кавычках — это всегда просто текст; названия столбцов пишите без кавычек.
Задание
- 1
Баннер на главной странице магазина показывает названия заглавными буквами, и на нём помещается только 12 символов. Чтобы увидеть, какие названия поместятся, покажите название каждой игры заглавными буквами как
bannerи длину названия какcharacters. Отсортируйте игры по названию:banner characters BAKERY STORY 12 CASTLE SIEGE 12 CUBE LOGIC 10 … … - 2
Ниже покажите отзывы на Dragon Forge (
game_idравен 1):customer_id, оценку в звёздах и длину комментария какcharacters, отсортировав поcustomer_id. У одного из отзывов нет комментария:customer_id stars characters 1 4 24 2 5 32 5 3 22 8 5 NULL