Sql додати символи на початок рядка. Про рядкові функції SQL або як маніпулювати текстом у базі даних MySQL

Основні рядкові функції та оператори надають різноманітні можливості та повертають як результат рядкове значення. Деякі рядкові функції є двоелементними, що означає, що можуть працювати одночасно з двома рядками. Стандарт SQL 2003 підтримує рядкові функції.

Оператор конкатенації

SQL 2003 визначається оператор конкатенації (||), який з'єднує два окремі рядки в одне рядкове значення.

DB2 платформа

Платформа DB2 підтримує оператор конкатенації SQL 2003, а також його синонім-функцію CONCAT.

MySQL платформа

Платформа MySQL підтримує функцію CONCATQ – синонім оператора конкатенації SQL 2003.

Oracle та PostgreSQL

Платформи PostgreSQL і Oracle підтримують оператор конкатенації SQL 2003 як подвійний вертикальної риси.

SQL Server платформа

Платформа SQL Serverвикористовує знак плюса (+) як синонім оператора конкатенації SQL 2003. У SQL Server є системний параметр CONCAT_NULL_YIELDS_NULL, який регулює поведінку системи, якщо при конкатенації рядкових значень є значення NULL.

/* Синтаксис SQL 2003 */

stringl || string2 || string3

string1string2string3

/* Для MySQL */

CONCAT("stringl", "string2")

Якщо будь-яке зі значень, що з'єднуються - порожнє, то повертається порожній рядок. Крім того, якщо в конкатенації бере участь числове значення, воно неявно перетворюється на рядкове.

SELECT CONCAT("My", "bologna", "has", "a", "first", "name…");

My bologna has a first name

SELECT CONCAT("My", NULL, "has", "first", "name...");

CONVERT та TRANSLATE

Функція CONVERT змінює відображення символьного рядка в межах набору символів та зіставлення. Наприклад, функцію CONVERT можна використовувати для зміни кількості бітів, що припадають на один символ.

Функція TRANSLATE переводить рядкове значення з одного набору символів до іншого. Так, функцію TRANSLATE можна використовувати для перетворення значення набору символів English на набір символів Kanji (японський) або Cyrillic (російський). Сам переклад вже повинен існувати або заданий за замовчуванням, або створений за допомогою команди CREATE TRANSLATION.

Синтаксис SQL 2003

CONVERT (символьне_значення USING ім'я_символьного_перетворення)

TRANSLATE(символьне значення USING ім'я_перекладу)

Функція CONVERT перетворює символьне значення до набору символів з ім'ям, вказаним у параметрі имя_символьного преобразования. Функція TRANSLATE перетворює символьне значення до набору символів, вказаних у імені_перекладу.

Серед платформ, що розглядаються, тільки Oracle підтримує функції CONVERT і TRANSLATE у тому вигляді, в якому вони визначаються в стандарті SQL 2003. Реалізація функції TRANSLATE в Oracle дуже подібна до SQL 2003, але не ідентична йому. У цій реалізації функція приймає лише два аргументи і здійснює переклад лише між набором символів бази даних та набором символів з підтримкою національної мови.

Реалізація функції CONV в MySQL лише переводить числа з однієї основи до іншого. А ось у SQL Server реалізація функції CONVERT дуже багата можливостями і змінює тип даних для вираження, але у всіх інших своїх аспектах вона відрізняється від функції CONVERТстандарту SQL 2003. Платформа PostgreSQL не підтримує функцію CONVERT, а реалізація функції TRANSLATE перетворює всі входження символьного рядка в будь-яке інший символьний рядок.

DB2

Платформа DB2 не підтримує функцію CONVERT, а підтримка функції TRANSLATE не відповідає стандарту ANSI. Функція TRANSLATE використовується для перетворення підрядків і, як історично склалося, є синонімом функції UPPER, оскільки функція UPPER тільки недавно була додана до DB2. Якщо функція TRANSLATE використовується в DB2 з єдиним аргументом у вигляді символьного виразу, результатом буде той самий рядок, перетворений у верхній регістр. Якщо функція використовується з кількома аргументами, наприклад TRANSLATE(ucmo4HUK, заміна, збіг), функція перетворює всі символи в джерелі, які також є в параметрі збіг. Кожен символ у джерелі, яке знаходиться в тому ж положенні, що у параметрі збіг, буде замінено символом із параметра заміни. Нижче наводиться приклад.

TRANSLATE("Hello, World! ") "HELLO; WORLD!"

TRANSLATE("Hello, World1", "wZ", "1W") "Hewwo, Zorwd1

MySQL

Платформа MySQL не підтримує функції TRANSLATE та CONVERT.

Oracle

Платформа Oracle підтримує наступний синтаксис функцій CONVERT та TRANSLATE.

У реалізації Oracle функція CONVERT повертає текст символьного значення, перетворений на цільовий_набір_символів. Параметр символьное_значение - це рядок, яку потрібно перетворити, параметр целевой_набор_символов - це назва набору символів, у якому потрібно перетворити рядок, а параметр исходный_набор символів - це набір символів, у якому строкове значення спочатку зберігалося.

Функція TRANSLATE в Oracle відповідає синтаксису ANSI, але ви можете вибирати лише один із двох наборів символів: набір символів бази даних (CHARJCS) та набір символів із підтримкою національної мови (NCHARJZS).

Oracle також підтримує іншу функцію, яка також називається TRANSLATE (без використання ключового слова USING). Ця функція TRANSLATE не пов'язана з перетворенням наборів символів.

Назви цільового та вихідного наборів символів можна передавати у вигляді рядкових констант, або у вигляді посилання на стовпець таблиці. Зверніть увагу, що при перетворенні рядка на набір символів, в якому відображаються не всі символи, що перетворюються, можна підставляти символи-замінники.

Oracle підтримує кілька загальних наборів символів, до яких належать US7ASCII, WE8DECDEC. WE8HP, F7DEC, WE8EBCDIC500, WE8PC850u WE8ISO8859PI. Наприклад:

SELECT CONVERT("Gro2", "US7ASCII", "WE8HP") FROM DUAL;

PostgreSQL

Платформа PostgreSQL підтримує інструкцію CONVERT стандарту ANSI, а перетворення можна визначати за допомогою команди CREATE CONVERSION. Реалізація функції TRANSLATE у PostgreSQL надає розширений набір функцій, які дозволяють перетворити будь-який текст на інший текст у межах зазначеного рядка.

TRANSLATE (символьний рядок, з тексту, текст)

Ось кілька прикладів:

SELECT TRANSLATE("12345abcde", "5а", "XX"); "1234XXbcde" SELECT TRANSLATE(title, "Computer", "PC") FROM titles WHERE type="Personal_computer" SELECT CONVERT("PostgreSQL" USING iso_8859_1_to_utf_8) "PostgreSQL"

SQL Server

Платформа SQL Server не підтримує функцію TRANSLATE. Реалізація функції CONVERT у SQL Server відповідає стандарту SQL 2003. Ця функція в SQL Server еквівалентна функції CAST.

CONVERT (тип_даних[(довжина) | (точність, масштаб)], вираз, стиль])

Пропозиція стиль використовується для визначення формату перетворення дати. За додатковою інформацієюЗверніться до документації SQL Server. Нижче наводиться приклад.

SELECT title, CONVERT(char(7), ytd_sales) FROM titles ORDER BY title GO

У цій частині мова піде про функції роботи з текстовою інформацією, які можуть застосовуватись у запитах та програмному кодімовою PL/SQL.

Функція CONCAT(strl, str2)

Ця функція виконує конкатенацію рядків strl та str2. Якщо один із аргументів дорівнює NULL, то він сприймається як порожній рядок. Якщо обидва аргументи дорівнюють NULL, то функція повертає NULL. Приклад:

SELECT CONCAT("У попа \"був собака") x1,
CONCATCTest" , NULL) х2,
CONCAT(NULL, "Test") х3,
CONCAT(NULL, NULL) x4
FROM dual

У попа був собака

Для конкатенації рядків Oracle підтримує спеціальний оператор конкатенації «||», який працює аналогічно до функції CONCAT, наприклад:

SELECT CONCAT("У попа \ "був собака") x1, "У попа" || "був собака" х2
FROM dual

Не слід плутати оператор конкатенації «||», еквівалентний виклику функції CONCAT, та оператор «+», що використовується в арифметичних операціях. У Oracle це різні оператори, але за рахунок автоматичного приведення типів можливі важкі помилки, наприклад:

SELECT "5" + "3" x1
FROM dual

У цьому випадку повертається числове значення 8, а не текстовий рядок"53". Це з тим, що, виявивши арифметичну операцію «+», Oracle автоматично намагається привести аргументи типу NUMBER.

Функція LOWER(str)

Функція LOWER перетворює всі символи рядка str на малі. Приклад:

SELECT LOWER("TeXt DATA") X
FROM dual

ФункціяUPPER(str)

Функція UPPER перетворює всі символи рядка str на великі. Приклад:

SELECT UPPER("TeXt DATA") X
FROM dual

Функція INITCAP(str)

Повертає рядок str, у якому перші літери всіх слів перетворені на великі. Функція зручна для форматування повного імені під час побудови звітів. Приклад:

SELECT INITCAPCІваноВ Петро СіДорович") X
FROM dual

ФункціїLTRIM(str[,set])іRTRIM(str[,set])

Функція LTRIM видаляє всі символи з початку рядка до першого символу, якого немає у наборі символів set. За замовчуванням set складається з одного пропуску і може не вказуватись. Функція RTRIM аналогічна LTRIM, але видаляє символи, починаючи з кінця рядка. Розглянемо кілька прикладів:

SELECT LTRIM("TeXt DATA") X1,
LTRIM("_ # TeXt DATA", "#_") X2,
LTRIM("1234567890 TeXt DATA", "1234567890") X3
FROM dual

Функція REPLACE(str, search_str, [,replace_str])

Функція REPLACE здійснює пошук зразка search_str у рядку str та кожне знайдене входження замінює на replace_str. За промовчанням replace_str дорівнює порожньому рядку, тому виклик функції REPLACE з двома аргументами призводить до видалення всіх знайдених входжень. Пошук підрядки ведеться з урахуванням регістру. Приклад:

SELECT REPLACE("У попа був собака", "собака", "кішка") x1,
REPLACE("У попа був злий собака", "злий") х2,
REPLACE("У попа був собака", "Собака", "Кішка") х3
FROM dual

У попа була кішка

У попа був собака

У попа був собака

Функція TRANSLATE(str, from_mask, to_mask)

Функція TRANSLATE аналізує рядок str і замінює у ньому всі символи, які у рядку from_mask, на відповідні символи з to_mask. Для коректної роботи функції рядка from_mask та to_mask повинні мати однакову довжину або рядок from_mask має бути довшим, ніж to_mask. Якщо from_mask довше, ніж to_mask, і в процесі обробки рядка str виявляться символи, що відповідають одному з символів from_mask, і при цьому їм не знайдеться відповідності to_mask, то такі символи будуть видалені з рядка str. Якщо передати from_mask або to_mask, що дорівнює NULL, то функція поверне значення NULL. Порівняння провадиться з урахуванням регістру.

SELECT TRANSLATE("Test 12345", "е2"!)
TRANSLATE("Test 12345", "e234", "E") x2
FROM dual

Ця функція зручна для вирішення ряду практичних завдань, пов'язаних з перекодуванням символів або пошуком заборонених символів. Наприклад, необхідно проаналізувати пароль та з'ясувати, чи містить він хоча б одну цифру. Реалізація цієї перевірки за допомогою TRANSLATE має вигляд:

IF TRANSLATE(PassWd, "0123456789", "*") = PassWd THEN
ADD_ERR0R("Помилка - Пароль повинен містити хоча б одну цифру!");
RETURN 1;
END IF;

Інший приклад: йде підготовка числа для його перетворення на NUMBER. Необхідно замінити роздільники десяткових знаків "," та "." на "." та видалити пробіли. Реалізація даної операції за допомогою TRANSLATE має вигляд:

SELECT TRANSLATE("123 455,23", "., ", " . . ") x1,
TRANSLATE("-123 455.23", ".,", "..") х2
FROM dual

Функція SUBSTR(str, m [,n])

Функція SUBSTR повертає фрагмент рядка str, починаючи із символу m довжиною n символів. Довжину можна не вказувати – у цьому випадку повертається рядок від символу m і до кінця рядка str. Нумерація символів йде з 1. Якщо вказати m = 0, копіювання все одно почнеться з першого символу. Завдання негативного значення m призводить до того, що символи відраховуються від кінця рядка, а чи не від початку. Завдання значень m, що перевищують за абсолютним значенням довжину рядка, призводить до того, що функція повертає NULL.

SELECT SUBSTR("У попа був собака", 13) x1,
SUBSTR("У попа був собака", -6) х2,
SUBSTR("Це тестовий текст", 5, 8) х3,
SUBSTR("У попа був собака", 150) х4
FROM dual

текстовий

Функція INSTR(str, search_str[,n[,m]])

Функція INSTR повертає позицію першого символу m-ro фрагмента рядка str, що збігається з рядком search_str. Порівняння ведеться з n символу рядка str, при порівнянні враховується регістр. За замовчуванням n = m = 1, тобто пошук ведеться від початку рядка та повертається позиція першого знайденого фрагмента. У разі неуспішного пошуку, функція повертає 0.

SELECT INSTR("y попа був собака", "собака") x1,
INSTR("y попа був собака", "кішка") х2,
INSTR("Це текст для демонстрації пошуку тексту", "текст", 1, 2) х3,
INSTR('11111000000001", "1", 7) х4
FROM dual

З цієї функції, так само як і з усіма іншими в Oracle, часто допускаються типові помилки, пов'язані з обробкою значення NULL. Якщо str=NULL, то функція поверне NULL, а чи не нуль! Це необхідно враховувати під час побудови різних умов. Наприклад, цей фрагмент програми на PL/SQL якраз не враховує цю особливість:

IF INSTR(TXT_VAR,"*") = 0 THEN
...
ENDIF;

У разі правильно було б написати так:

IF NVL(INSTR(TXT_VAR, "*"), 0) = 0 THEN
...
END IF;

Функції LENGTH (str) та LENGTHB (str)

Функція LENGTH (str) повертає довжину рядка str символів. Для порожнього рядка та значення NULL функція повертає NULL, тому разом із цією функцією рекомендується використовувати NVL.

SELECT LENGTH("У попа був собака") x1,
LENGTH("") х2,
LENGTH(NULL) х3,
NVL(LENGTH(""), 0) х4
FROM dual

Функція LENGTHB аналогічна до функції LENGTH, але повертає довжину рядка в байтах.

Функція ASCII(str)

Повертає ASCII код першого символу рядка str у разі застосування кодування ASCII і значення першого байта багатобайтного символу при використанні кодування на основі багатобайтних символів. Приклад:

SELECT ASCII("Test") x1 FROM dual

Функція CHR(n)

Повертає символ за його кодом.

SELECT CHR(64) x1
FROM dual

В інші. Вона має наступний синтаксис:

CONV(число,N,M)

Аргумент числоперебуває у системі числення з підставою N. Функція переводить їх у систему числення з підставою M і повертає значення вигляді рядка.

Приклад 1

Наступний запит переводить число 2 із десяткової системи обчислення в двійкову:

SELECT CONV(2,10,2);

Результат: 10

Для переведення числа 2E з шістнадцяткової системи в десяткову потрібен запит:

SELECT CONV("2E",16,10);

Результат: 46

Функція CHAR()перекладає ASCII-код у рядки. Вона має наступний синтаксис:

CHAR(n1,n2,n3..)

Приклад 2

SELECT CHAR(83,81,76);

Результат: SQL

Наступні функції повертають довжину рядка:

  • LENGTH(рядок);
  • OCTET_LENGTH(рядок);
  • CHAR_LENGTH(рядок);
  • CHARACTER_LENGTH(рядок).

Приклад 3

SELECT LENGTH("MySQL");

Результат: 5

Іноді буває корисною функція BIT_LENGTH(рядок)що повертає довжину рядка в бітах.

Приклад 4

SELECT BIT_LENGTH("MySQL");

Результат: 40

Функції роботи з підрядками

Підрядком зазвичай називають частину рядка. Часто потрібно дізнатися позицію першого входження підрядка в рядок. Це завдання в MySQL вирішують три функції:

  • LOCATE(підрядок, рядок [,позиція]);
  • POSITION (підрядок, рядок);
  • INSTR(рядок, підрядок).

Якщо рядок не міститься в рядку, всі три функції повертають значення 0. Функція INSTR() відрізняється від двох інших порядком аргументів. Функція LOCATE() може містити третій аргумент позиція, який дозволяє шукати підрядок у рядку не з початку, а із зазначеної позиції.

Приклад 5

SELECT LOCATE("Топаз", "відкрите акціонерне товариство Топаз");

Результат: 31

SELECT POSITION("Топаз", "відкрите акціонерне товариство Топаз");

Результат: 31

SELECT INSTR("відкрите акціонерне товариство Топаз",'Топаз');

Результат: 31

SELECT LOCATE("Топаз", "Завод Топаз та ТОВ Топаз", 9);

Результат: 20

SELECT LOCATE("Алмаз", "відкрите акціонерне товариство Топаз");

Результат: 0

Функції LEFT(рядок, N)і RIGHT(рядок, N)повертають відповідно крайні ліві та крайні праві N символів у рядку.

Приклад 6

SELECT LEFT("СУБД MySQL", 4);

Результат: СУБД

SELECT RIGHT("СУБД MySQL", 5);

Результат: MySQL

Іноді потрібно отримати підрядок, який починається з певної заданої позиції. Для цього використовуються функції:

  • SUBSTRING(рядок, позиція, N);
  • MID (рядок, позиція, N).

Обидві функції повертають N символів заданого рядка, розташованих з зазначеної позиції.

Приклад 7

SELECT SUBSTRING("СУБД MySQL - одна з найпопулярніших СУБД", 6,5);

Результат: MySQL

При роботі з електронними адресами та адресами сайтів дуже корисна функція SUBSTR_INDEX(). Функція має три аргументи:

SUBSTR_INDEX(рядок, роздільник, N).

Аргумент N може бути позитивним чи негативним. Якщо він негативний, то функція знаходить N-е входження роздільника, якщо вважати праворуч. Після чого повертає підрядок, розташований праворуч від знайденого роздільника. Якщо N позитивно, то функція знаходить N-е входження роздільника зліва і повертає підрядок, розташовану зліва від знайденого роздільника.

Приклад 8

SELECT SUBSTRING_INDEX("www.mysql.ru",".",2);

Результат: www.mysql

SELECT SUBSTRING_INDEX("www.mysql.ru",".",-2);

Результат: mysql.ru

Функція REPLACE (рядок, підрядок 1, підрядок 2)дозволяє замінити в рядку всі входження підрядка1 на підрядок2.

Із книги Реєстр Windows автора Клімов А

Швидке завершення роботи Windows(Windows NT/2000/XP) Windows NT версії 3.1 та 3.5 дозволяла закрити всі процеси за 20 секунд. У Windows NT 3.51 і вище існує можливість визначати розмір інтервалу, протягом якого система повинна завершити свою роботу. Для цього необхідно виправити ключ

З книги Обробка баз даних на Visual Basic®.NET автора Мак-Манус Джеффрі П

РОЗДІЛ 3 Знайомство з SQL Server 2000 У минулому багато програмістів розпочинали створення додатків баз даних, використовуючи мова Visual Basic та базу даних Microsoft Access із ядром Jet. Щойно база даних розросталася до кількох тисяч записів або до її послуг зверталися кілька

З книги Windows Script Hostдля Windows 2000/XP автора Попов Андрій Володимирович

Вимоги для інсталяції SQL Server 2000 Для інсталяції SQL Server 2000 потрібен комп'ютер з процесором Pentium (або сумісним з ним) з частотою не менше 166 МГц, простір на жорсткому диску від 95 до 270 Мбайт (270 Мбайт для типового варіанта інсталяції Engine), дисковод

З книги Про що не пишуть у книгах з Delphi автора Григор'єв А. Б.

Установка SQL Server 2000 Після вибору комп'ютера з необхідною конфігурацією можна перейти до інсталяції. У цілому нині процес установки SQL Server 2000 дуже простий, крім наступних особливостей: він триває досить довго; в процесі установки задається дуже багато на перший

Довідник з PHP автора

Основи роботи з SQL Server 2000 Після встановлення та запуску SQL Server необхідно виконати такі дії, перш ніж приступити до вилучення або збереження даних: створити одну або кілька баз даних; створити таблиці у базі даних; створити уявлення та збережені

З книги XSLT автора Хольцнер Стівен

Функції до роботи з масивами У табл. П2.17 наведено функції, за допомогою яких можна створювати нові масиви та отримувати відомості про вже наявні. Таблиця П2.17. Функції для роботи з масивами Функція Опис Array(arglist) Повертає значення типу Variant, яке є

З книги Linux: Повне керівництво автора Колісниченко Денис Миколайович

3.3. Тонкощі роботи з рядками У цьому розділі ми розглянемо деякі тонкощі роботи з рядками, які дозволяють краще зрозуміти, який код генерує компілятор за деяких, здавалося б, елементарних дій. Не всі наведені приклади працюють не так, як

З книги Мистецтво програмування мовою сценаріїв командної оболонки автора Купер Мендель

З книги Мова Сі - керівництво для початківців автора Прата Стівен

Функції XPath для роботи з рядками XSLT доступні такі функції XPath для роботи з рядками: concat(string string1, string string2,...). Повертає конкатенацію (об'єднання) всіх переданих їй рядків; contains(string string1, string string2). Повертає істину, якщо перший рядок містить (contains) другий

З книги Linux та UNIX: програмування у shell. Посібник розробника. автора Тейнслі Девід

23.2.2. Функції для роботи з пам'яттю Функції для роботи з пам'яттю бібліотеки Glib виконують ті ж дії, що і відповідні їм мови С. Ось їх прототипи: gpointer g_malloc(gulong size);

З книги Опис мови PascalABC.NET автора Колектив РуБоард

З книги автора

13. Символьні рядки і функції над рядками

З книги автора

Більшість бібліотек мови Сі забезпечені функціями, що працюють з рядками. Розглянемо чотири найбільш корисні і поширені: strlen(), strcat(), strcmp() і strcpy(). Ми вже використовували функцію strlen(), яка знаходить довжину рядка.

З книги автора

З книги автора

Підпрограми для роботи із символами та рядками function Chr(a: byte): char; Перетворює код на символ у кодуванні Windows function ChrUnicode(a: word): char; Перетворює код на символ у кодуванні Unicode function OrdUnicode(a: char): word; Перетворює символ на код у кодуванні Unicode function UpperCase(ch: char): char;

З книги автора

Функції для роботи з кольором Тип кольору Color є синонімом System.Drawing.Color. функція RGB(r, g, b: byte): Color; Повертає колір, який містить червону (r), зелену (g) та синю (b) складові (r,g та b - у діапазоні від 0 до 255) function ARGB(a,r,g,b: byte): Color; Повертає колір, що містить

Ось повний перелікфункцій роботи з рядками, взятий із BOL:

Результат - 11. Щоб з'ясувати, які це літери, ми можемо застосувати функцію CHAR, яка повертає символ за відомим ASCII-кодом (від 0 до 255):

А ось як, наприклад, можна отримати таблицю кодів усіх алфавітних символів:

SELECT CHAR(ASCII("a")+ num-1) letter, ASCII("a")+ num - 1 FROM (SELECT 5*5*(a-1)+5*(b-1) + c AS num FROM (SELECT 1 a UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) x CROSS JOIN (SELECT 1 b SELECT 1 c UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) z) x WHERE ASCII("a")+ num -1 BETWEEN ASCII("a") AND ASCII("z")

Тих, хто ще не в курсі генерації числової послідовності, надсилаю до відповідної статті.

Як відомо, коди малих і великих літер відрізняються. Тому щоб отримати повний набір без переписування запиту, досить просто дописати до наведеного вище коду аналогічний:

Я вважаю, що не буде складним додати цю літеру до таблиці, якщо потрібно.

Розглянемо тепер завдання визначення знаходження підрядки в рядковому вираженні. Для цього можуть використовуватись дві функції - CHARINDEXі PATINDEX. Обидві вони повертають початкову позицію (позицію першого символу підрядка) підрядки у рядку. Функція CHARINDEX має синтаксис:

CHARINDEX ( шуканий_вираз, строковий_вираз[, стартова_позиція])

Тут необов'язковий цілісний параметр стартова_позиціявизначає позицію у рядковому вираженні, починаючи з якої виконується пошук шуканого_вираження. Якщо цей параметр опущено, пошук виконується від початку строкового_виразу. Наприклад, запит

Слід зазначити, що й шукана підрядок чи рядкове вираз є NULL, то результатом функції також буде NULL.

Наступний приклад визначає позиції першого та другого входження символу "a" у імені корабля "California"

А ось, наприклад, як можна знайти імена кораблів, які містять послідовність із трьох символів, перший та останній з яких є "e":

Парна до LEFTфункція RIGHTповертає задану кількість символів праворуч із рядкового виразу:

RIGHT(<рядкове висловлювання>,<кількість символів>)

Ось, наприклад, як можна визначити імена кораблів, які починаються і закінчуються на ту саму літеру:

Тут ми розділяємо пробілом ім'я класу та корабля. Крім того, щоб не повторювати всю конструкцію як аргумент функції, використовуємо підзапит. Результат матиме вигляд:

Щоб унеможливити цей випадок, можна скористатися ще однією корисною функцією LEN (<рядковий вираз>) , яка повертає кількість символів у рядку. Обмежимося нагодою, коли число символів більше одиниці:

Функція REPLICATEдоповнює константу "abcde" п'ятьма пробілами праворуч, які не враховуються функцією LEN, - В обох випадках отримуємо 5.
Функція DATALENGTHповертає число байтів у поданні змінної і демонструє різницю між типами CHAR і VARCHAR. DATALENGTHдасть нам 12 для типу CHAR та 10 - для VARCHAR.
Як і слід очікувати, DATALENGTHдля змінної типу VARCHAR відновила фактичну довжину змінної. Але чому для змінної типу CHAR результат дорівнював 12? Справа в тому, що CHAR – це тип фіксованої довжини. Якщо значення змінної виявляється меншою за її довжину, а довжину ми оголосили як CHAR(12), то змінної буде "вирівняно" до необхідної довжини за рахунок додавання кінцевих пробілів.

На сайті є завдання, в яких потрібно впорядкувати (знайти максимум тощо) у числовому порядку значення, представлені у текстовому форматі. Наприклад, номер місця в літаку ("2d") або швидкість CD ("24x"). Проблема полягає в тому, що текст сортується так (за зростанням)

Якщо ж потрібно впорядкувати місця у порядку зростання рядів, то порядок має бути такий

Якщо тільки цим і обмежитись, то отримаємо

Залишилося виконати сортування



Завантаження...
Top