|
@@ -79,6 +79,44 @@ SELECT pg_column_size(333::numeric(3)); -- 8
|
|
|
|
|
|
Ну и помимо оптимизации хранения мы также получаем оптимизацию производительности, потому что меньше данных нам надо считывать с диска и так далее. Считать 260 мегабайт значительно быстрее, чем 33 гигабайта.
|
|
|
|
|
|
+~={yellow}Строковые типы данных=~
|
|
|
+
|
|
|
+- **varchar** - строковый тип данных с указанием максимальной длины. При сохранении проверяет, что строка не вышла за заданный диапазон длины.
|
|
|
+- **text** - без указания максимальной длины. Нет проверки выхода за диапазон.
|
|
|
+- **char** - строка фиксированной длины. Если данные меньше, то строка будет дополнена пробелами.
|
|
|
+
|
|
|
+```sql
|
|
|
+-- Функция форматирования строк
|
|
|
+select format('замечательный автор %s!', 'Пушкин');
|
|
|
+
|
|
|
+-- Можно вырезать подстроки
|
|
|
+select subsctring('привет' from 1 for 5); -- приве
|
|
|
+select subsctring('привет' from 1); -- привет
|
|
|
+
|
|
|
+-- Можно заменять подстроку на подстроку
|
|
|
+select replace('Саня любит пиво', 'пиво', 'бегать и подтягиваться');
|
|
|
+
|
|
|
+-- Проверка входа подстроки в строку. Функция вернет позицию или 0
|
|
|
+select position('Саня' in 'Саня любит бегать'); -- 1
|
|
|
+
|
|
|
+-- Функции пребразования регистров
|
|
|
+select upper(name) from author;
|
|
|
+select lower(name) from author;
|
|
|
+
|
|
|
+-- Строку можно привести к числу (целому).
|
|
|
+select '123'::int;
|
|
|
+select '123.123'::int; -- ошибка
|
|
|
+
|
|
|
+-- или cast
|
|
|
+select cast('123' as int);
|
|
|
+select cast('hello' as int); -- ошибка
|
|
|
+
|
|
|
+-- Можно разбить строку по символу и взять нужный элемент
|
|
|
+select split_part('2024-06-24', '-', 1); -- 2024
|
|
|
+select split_part('2024-06-24', '-', 2); -- 06
|
|
|
+select split_part('2024-06-24', '-', 3); -- 24
|
|
|
+```
|
|
|
+
|
|
|
~={yellow}Перечисления=~
|
|
|
```sql
|
|
|
create type day_of_week as enum (
|