PL/SQL - Строки: Пособие для начинающих
Здравствуйте, будущие маги PL/SQL! Сегодня мы отправляемся в увлекательное путешествие в мир строк в PL/SQL. Не волнуйтесь, если вы еще никогда не писали ни строчки кода — я буду вашим доброжелательным проводником, и мы будем двигаться шаг за шагом. К концу этого урока вы будете работать со строками, как профи!
Что такое строки?
Прежде чем погружаться в детали, начнем с основ. В программировании строка — это простоsequence из символов. Это может быть слово, предложение или даже целый абзац. Представьте себе любой текст, который вы можете набрать на своей клавиатуре.
Объявление строковых переменных
В PL/SQL нам нужно объявлять свои переменные перед использованием. Это как представиться перед началом разговора — это просто iyi manners!
Основное объявление строки
Давайте начнем с самого простого способа объявления строковой переменной:
DECLARE
my_name VARCHAR2(50) := 'John Doe';
BEGIN
DBMS_OUTPUT.PUT_LINE('My name is: ' || my_name);
END;
В этом примере:
- Мы используем ключевое слово
DECLARE
, чтобы начать объявление переменных. -
my_name
— это имя нашей переменной. -
VARCHAR2(50)
означает, что это строка переменной длины, которая может содержать до 50 символов. -
:=
— это оператор присваивания, как знак равенства. - 'John Doe' — это начальное значение, которое мы присваиваем
my_name
.
Когда мы запустим этот код, он выведет: "My name is: John Doe"
Использование различных типов строк
PL/SQL предлагает несколько типов строк. Давайте рассмотрим несколько из них:
DECLARE
v_varchar2 VARCHAR2(20) := 'Hello, World!';
v_char CHAR(10) := 'Fixed ';
v_long LONG := 'This is a long string that can store up to 32,760 characters';
BEGIN
DBMS_OUTPUT.PUT_LINE('VARCHAR2: ' || v_varchar2);
DBMS_OUTPUT.PUT_LINE('CHAR: ' || v_char);
DBMS_OUTPUT.PUT_LINE('LONG: ' || v_long);
END;
Вот что происходит:
-
VARCHAR2
— это наиболее распространенный тип, хранящий строки переменной длины. -
CHAR
предназначен для строк с固定ной длиной. Обратите внимание, как он дополняет额外的 пробелами. -
LONG
может хранить очень большие строки, но он менее гибок в некоторых операциях.
Функции и операторы строк PL/SQL
Теперь, когда мы знаем, как объявлять строки, давайте повеселимся с ними!
Конкатенация
Конкатенация — это просто изысканное слово для "соединения строк". В PL/SQL мы используем оператор ||
:
DECLARE
first_name VARCHAR2(20) := 'Jane';
last_name VARCHAR2(20) := 'Smith';
full_name VARCHAR2(41);
BEGIN
full_name := first_name || ' ' || last_name;
DBMS_OUTPUT.PUT_LINE('Full name: ' || full_name);
END;
Это выведет: "Full name: Jane Smith"
Строковые функции
PL/SQL предоставляет множество встроенных функций для работы со строками. Давайте рассмотрим некоторые из самых полезных:
Функция | Описание | Пример |
---|---|---|
UPPER | Преобразует строку в верхний регистр | UPPER('hello') возвращает 'HELLO' |
LOWER | Преобразует строку в нижний регистр | LOWER('WORLD') возвращает 'world' |
INITCAP | Capitalizes first letter of each word | INITCAP('john doe') возвращает 'John Doe' |
LENGTH | Возвращает длину строки | LENGTH('OpenAI') возвращает 6 |
SUBSTR | Извлекает часть строки | SUBSTR('HelloWorld', 1, 5) возвращает 'Hello' |
TRIM | Удаляет указанные символы из начала/конца | TRIM(' Hello ') возвращает 'Hello' |
REPLACE | Заменяет все occurrences of a substring | REPLACE('JACK and JILL','J','BL') возвращает 'BLACK and BLILL' |
Давайте увидим, как они работают:
DECLARE
v_string VARCHAR2(50) := ' hello, world! ';
BEGIN
DBMS_OUTPUT.PUT_LINE('Original: ' || v_string);
DBMS_OUTPUT.PUT_LINE('UPPER: ' || UPPER(v_string));
DBMS_OUTPUT.PUT_LINE('LOWER: ' || LOWER(v_string));
DBMS_OUTPUT.PUT_LINE('INITCAP: ' || INITCAP(v_string));
DBMS_OUTPUT.PUT_LINE('LENGTH: ' || LENGTH(v_string));
DBMS_OUTPUT.PUT_LINE('SUBSTR: ' || SUBSTR(v_string, 3, 5));
DBMS_OUTPUT.PUT_LINE('TRIM: ' || TRIM(v_string));
DBMS_OUTPUT.PUT_LINE('REPLACE: ' || REPLACE(v_string, 'o', '0'));
END;
Этот код выведет:
Original: hello, world!
UPPER: HELLO, WORLD!
LOWER: hello, world!
INITCAP: Hello, World!
LENGTH: 16
SUBSTR: hello
TRIM: hello, world!
REPLACE: hell0, w0rld!
Combining It All
Теперь давайте объединим все, что мы узнали, в более сложный пример:
DECLARE
v_sentence VARCHAR2(100) := 'The quick brown fox jumps over the lazy dog';
v_word VARCHAR2(20);
v_count NUMBER;
BEGIN
-- Count the number of words
v_count := LENGTH(v_sentence) - LENGTH(REPLACE(v_sentence, ' ', '')) + 1;
DBMS_OUTPUT.PUT_LINE('Number of words: ' || v_count);
-- Extract and capitalize the 4th word
v_word := INITCAP(SUBSTR(v_sentence,
INSTR(v_sentence, ' ', 1, 3) + 1,
INSTR(v_sentence, ' ', 1, 4) - INSTR(v_sentence, ' ', 1, 3) - 1));
DBMS_OUTPUT.PUT_LINE('The 4th word is: ' || v_word);
-- Replace 'fox' with 'cat' and 'dog' with 'mouse'
v_sentence := REPLACE(REPLACE(v_sentence, 'fox', 'cat'), 'dog', 'mouse');
DBMS_OUTPUT.PUT_LINE('Modified sentence: ' || v_sentence);
END;
Этот пример демонстрирует:
- Подсчет слов, подсчитывая пробелы
- Извлечение конкретного слова с помощью
SUBSTR
иINSTR
- Замену нескольких слов в предложении
Вывод:
Number of words: 9
The 4th word is: Fox
Modified sentence: The quick brown cat jumps over the lazy mouse
И вот оно! Вы только что сделали свои первые шаги в чудесном мире строк PL/SQL. Помните, что практика делает perfect, так что не бойтесь экспериментировать с этими функциями и создавать свои собственные приключения с манипуляцией строками.
Не пройдет и много времени, как вы начнете составлять сложные запросы и впечатлять своих друзей своим мастерством PL/SQL. Продолжайте программировать и удачи в работе со строками!
Credits: Image by storyset