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 сървъризползва знака плюс (+) като синоним на оператора за конкатенация на SQL 2003. SQL Server има системен параметър CONCAT_NULL_YIELDS_NULL, който контролира как се държи системата, когато се срещнат NULL стойности, когато низовите стойности са свързани.

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

низ || низ2 || низ3

низ1низ2низ3

/* За MySQL */

CONCAT("низ", "низ2")

Ако някоя от свързаните стойности е нула, тогава се връща празен низ. Също така, ако числова стойност е включена в конкатенацията, тя се преобразува имплицитно в стойност на низ.

SELECT CONCAT("Моят", "болоня", "има", "а", "първо", "име…");

Моята болоня си има първо име

SELECT CONCAT("Моето", NULL, "има", "първо", "име…");

КОНВЕРТИРАНЕ и ПРЕВОД

Функцията CONVERT променя показването на символен низ в рамките на набор от знаци и сортиране. Например функцията CONVERT може да се използва за промяна на броя битове на знак.

Функцията TRANSLATE превежда стойност на низ от един набор от знаци в друг. Например функцията TRANSLATE може да се използва за преобразуване на стойност от набора от английски знаци в набор от знаци на канджи (японски) или кирилица (руски). Самият превод трябва вече да съществува, по подразбиране или създаден с командата CREATE TRANSLATION.

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

КОНВЕРТИРАНЕ (символна_стойност, ИЗПОЛЗВАЩА char_convert_name)

TRANSLATE(символна_стойност ИЗПОЛЗВАНЕ на превод_име)

Функцията CONVERT преобразува символна стойност в набор от знаци с името, указано в параметъра character_conversion_name. Функцията TRANSLATE преобразува стойност на символ в набора от знаци, указан в име_на_превод.

Сред разглежданите платформи само Oracle поддържа функциите CONVERT и TRANSLATE, както са дефинирани в стандарта SQL 2003. Реализацията на Oracle на функцията TRANSLATE е много подобна, но не идентична с SQL 2003. В тази реализация функцията приема само два аргумента и превежда само между набора от знаци на базата данни и набора от знаци с активиран локал.

Изпълнението на MySQL на функцията CONV преобразува само числа от една база в друга. В SQL Server обаче изпълнението на функцията CONVERT е много богато и променя типа данни на израз, но във всички останали аспекти се различава от стандартната функция CONVERT на SQL 2003. Платформата PostgreSQL не поддържа функцията CONVERT и изпълнението на функцията TRANSLATE преобразува всички срещания на символен низ във всеки друг символен низ.

DB2

DB2 платформата не поддържа функцията CONVERT, а поддръжката за функцията TRANSLATE не е съвместима с ANSI. Функцията TRANSLATE се използва за преобразуване на поднизове и исторически е била синоним на функцията UPPER, тъй като функцията UPPER едва наскоро беше добавена към DB2. Ако функцията TRANSLATE се използва в DB2 с аргумент на израз с един знак, резултатът е същият низ, преобразуван в главни букви. Ако функцията се използва с множество аргументи, като например TRANSLATE(ucmo4HUK, replace, match), тогава функцията ще преобразува всички знаци в източника, които също са в параметъра за съвпадение. Всеки знак в източника, който е на същата позиция като параметъра за съвпадение, ще бъде заменен със знака от параметъра за замяна. По-долу е даден пример.

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

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

MySQL

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

Оракул

Платформата Oracle поддържа следния синтаксис за функциите CONVERT и TRANSLATE.

В реализацията на Oracle функцията CONVERT връща текста на стойността на символа, преобразуван в target_character_set. Параметърът character_value е низът, който трябва да бъде преобразуван, параметърът target_charset е името на набора от знаци, към който трябва да се преобразува низът, а параметърът source_charset е наборът от знаци, в който първоначално е била съхранена стойността на низа.

Функцията TRANSLATE в Oracle отговаря на синтаксиса на ANSI, но можете да изберете само един от два набора от знаци: набор от знаци на базата данни (CHARJCS) и набор от знаци за поддръжка на национален език (NCHARJZS).

Oracle поддържа и друга функция, която също се нарича TRANSLATE (без да се използва ключова думаИЗПОЛЗВАЙКИ). Тази функция TRANSLATE няма нищо общо с преобразуването на набор от знаци.

Имената на целевия и изходния набор от символи могат да бъдат предадени или като низови константи, или като препратка към колона на таблица. Имайте предвид, че когато преобразувате низ в набор от знаци, който не показва всички преобразувани знаци, можете да замените заместващи знаци.

Oracle поддържа няколко общи набора от символи, които включват US7ASCII, WE8DECDEC. WE8HP, F7DEC, WE8EBCDIC500, WE8PC850u WE8ISO8859PI. Например:

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

PostgreSQL

Платформата PostgreSQL поддържа оператора ANSI CONVERT и преобразувания могат да бъдат дефинирани тук с помощта на командата CREATE CONVERSION. Изпълнението на PostgreSQL на функцията TRANSLATE предоставя разширен набор от функции, които ви позволяват да конвертирате всеки текст в друг текст в рамките на определен низ.

ПРЕВОД (низ от знаци, от_текст, към_текст)

Ето няколко примера:

SELECT TRANSLATE("12345abcde", "5a", "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 сървър

Платформата SQL Server не поддържа функцията TRANSLATE. Реализацията на SQL Server на функцията CONVERT не следва стандарта SQL 2003. Тази функция е еквивалентна на функцията CAST в SQL Server.

КОНВЕРТИРАНЕ (тип данни [(дължина) | (прецизност, мащаб)], израз, стил])

Стилът на клаузата се използва за определяне на формата за преобразуване на дата. Отзад Допълнителна информациявижте документацията на SQL Server. По-долу е даден пример.

ИЗБЕРЕТЕ заглавие, CONVERT(char(7), ytd_sales) FROM заглавия ПОРЪЧАЙТЕ ПО заглавие GO

В тази част ще говорим за функциите за работа с текстова информация, която може да се използва в заявки и програмен кодв PL/SQL.

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

Тази функция свързва низовете strl и str2. Ако един от аргументите е NULL, той се третира като празен низ. Ако и двата аргумента са NULL, тогава функцията връща NULL. Пример:

SELECT CONCAT("Свещеникът\"имал куче") x1,
CONCATCTest" , NULL) x2,
CONCAT(NULL, "Тест") x3,
CONCAT(NULL, NULL) x4
ОТ двойно

Папата имаше куче

За конкатенация на низове Oracle поддържа специален оператор за конкатенация "||", който работи подобно на функцията CONCAT, например:

SELECT CONCAT("Свещеник\"има куче") x1, "Свещеник" || "има куче" x2
ОТ двойно

Не бъркайте оператора за конкатенация "||", еквивалентен на извикването на функцията CONCAT, и оператора "+", използван в аритметичните операции. В Oracle е така различни оператори, но поради автоматичното преобразуване на типове са възможни фини грешки, например:

ИЗБЕРЕТЕ "5" + "3" x1
ОТ двойно

В този случай се връща числовата стойност 8, а не текстов низ"53". Това се дължи на факта, че след откриване на аритметичната операция "+", Oracle автоматично се опитва да приведе аргументите към типа NUMBER.

Функция LOWER(str).

Функцията LOWER преобразува всички знаци на низа str в малки букви. Пример:

SELECT LOWER("TEXt DATA") X
ОТ двойно

функцияГОРЕН (низ)

Функцията UPPER преобразува всички знаци в низа str в главни букви. Пример:

SELECT UPPER("TEXt DATA") X
ОТ двойно

Функция INITCAP(str).

Връща низа str с първите букви на всички думи, преобразувани в главни букви. Функцията е полезна за форматиране на пълното име при изграждане на отчети. Пример:

SELECT INITCAPCIvanov Петър Сидорович") X
ОТ двойно

ФункцииLTRIM(str[,set])ИRTRIM(str[,set])

Функцията LTRIM премахва всички знаци от началото на низа до първия знак, който не е в зададения набор от знаци. По подразбиране наборът се състои от един интервал и може да бъде пропуснат. Функцията RTRIM е подобна на LTRIM, но премахва знаци от края на низа. Нека да разгледаме няколко примера:

SELECT LTRIM(" TeXt DATA") X1,
LTRIM(" _ # TeXt DATA", " #_") X2,
LTRIM(" 1234567890 TeXt DATA", " 1234567890") X3
ОТ двойно

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

Функцията REPLACE търси модела search_str в низа str и заменя всяко срещане със replace_str. По подразбиране replace_str е празният низ, така че извикването на функцията REPLACE с два аргумента премахва всички намерени срещания. Търсенето на подниз е чувствително към главни и малки букви. Пример:

SELECT REPLACE("Свещеникът имаше куче", "куче", "котка") x1,
REPLACE("Свещеникът имаше ядосано куче", "зло") x2,
REPLACE("Свещеникът имаше куче", "Куче", "Котка") x3
ОТ двойно

Папата имаше котка

Папата имаше куче

Папата имаше куче

Функция 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("Тест 12345", "e2\ "E!") x1,
TRANSLATE("Тест 12345", "e234", "E") x2
ОТ двойно

Тази функция е удобна за решаване на редица практически проблеми, свързани с преобразуване на знаци или търсене на забранени знаци. Например, трябва да анализирате парола и да разберете дали съдържа поне едно число. Изпълнението на тази проверка с помощта на TRANSLATE изглежда така:

IF TRANSLATE(PassWd, "0123456789", "*") = PassWd THEN
ADD_ERR0R("Грешка - Паролата трябва да съдържа поне едно число!");
ВРЪЩАНЕ 1;
КРАЙ АКО;

Друг пример: подготвя се число за преобразуването му в NUMBER. Трябва да замените десетичните разделители "," и "." На "." и премахнете интервалите. Изпълнението на тази операция с помощта на TRANSLATE изглежда така:

SELECT TRANSLATE("123 455.23", "., ", " . . . ") x1,
TRANSLATE("-123 455.23", "., ", " . . ") x2
ОТ двойно

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

Функцията SUBSTR връща фрагмент от низа str, започващ от символ m с дължина n знака. Дължината може да бъде пропусната - в този случай се връща низ от символа m до края на низа str. Символите се номерират от 1. Ако посочите m = 0, тогава копирането пак ще започне от първия знак. Задаването на отрицателна стойност за m кара символите да се броят от края на низа, а не от началото. Задаването на m стойности, които са по-големи от дължината на низа в абсолютна стойност, кара функцията да върне NULL.

SELECT SUBSTR("Свещеникът имаше куче", 13) x1,
SUBSTR("Свещеникът имаше куче", -6) x2,
SUBSTR("Това е тестов текст", 5, 8) x3,
SUBSTR("Свещеникът имаше куче", 150) x4
ОТ двойно

текст

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

Функцията INSTR връща позицията на първия знак m-ro от фрагмента от низ str, който съответства на низа search_str. Сравнението се прави от n-тия символ на низа str, сравнението е чувствително към малки и главни букви. По подразбиране n = m = 1, т.е. търсенето се извършва от началото на низа и се връща позицията на първия намерен фрагмент. Ако търсенето е неуспешно, функцията връща 0.

SELECT INSTR("y butt was a dog", "dog") x1,
INSTR("y butt was a dog", "cat") x2,
INSTR("Това е текст за демонстрация на търсене на текст", "текст", 1, 2) x3,
INSTR('11111000000001", "1", 7) x4
ОТ двойно

С тази функция, както и с всички останали в Oracle, често се правят типични грешки, свързани с обработката на NULL стойността. Ако str=NULL, тогава функцията ще върне NULL, а не нула! Това трябва да се има предвид при изграждането на различни условия. Например, този програмен фрагмент на PL/SQL не взема предвид тази функция:

IF INSTR(TXT_VAR,"*") = 0 ТОГАВА
...
КРАЙАКО;

В този случай би било правилно да напишете така:

IF NVL(INSTR(TXT_VAR, "*"), 0) = 0 THEN
...
КРАЙ АКО;

Функции LENGTH(str) и LENGTHB(str).

Функцията LENGTH(str) връща дължината на низа str в знаци. За празен низ и стойност NULL функцията връща NULL, така че се препоръчва използването на NVL с тази функция.

SELECT LENGTH("Свещеникът имаше куче") x1,
LENGTH("") x2,
LENGTH(NULL) x3,
NVL(ДЪЛЖИНА(""), 0) x4
ОТ двойно

Функцията LENGTHB е подобна на функцията LENGTH, но връща дължината на низа в байтове.

Функция ASCII(str).

Връща ASCII кода на първия символ на str, когато се използва ASCII кодиране, и стойността на първия байт на многобайтов знак, когато се използва многобайтово кодиране. Пример:

SELECT ASCII("Тест") x1 FROM dual

Функция CHR(n).

Връща знак по неговия код.

ИЗБЕРЕТЕ CHR(64) x1
ОТ двойно

На другите. Има следния синтаксис:

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

Следните функции връщат дължината на низ:

  • ДЪЛЖИНА(низ);
  • OCTET_LENGTH(низ);
  • CHAR_LENGTH(низ);
  • CHARACTER_LENGTH(низ).

Пример 3

SELECT LENGTH("MySQL");

Резултат: 5

Понякога полезна функция BIT_LENGTH(низ), който връща дължината на низа в битове.

Пример 4

SELECT BIT_LENGTH("MySQL");

Резултат: 40

Поднизови функции

Поднизът обикновено е част от низ. Често искате да знаете позицията на първото появяване на подниз в низ. Има три функции, които решават този проблем в MySQL:

  • LOCATE(подниз, низ [,позиция]);
  • ПОЗИЦИЯ(подниз, низ);
  • INSTR(низ, подниз).

Ако поднизът не се съдържа в низа, тогава и трите функции връщат 0. Функцията INSTR() се различава от другите две по реда на своите аргументи. Функцията LOCATE() може да съдържа трети аргумент позиция, което ви позволява да търсите подниз в низ не от началото, а от посочената позиция.

Пример 5

SELECT LOCATE("Топаз", "Топаз");

Резултат: 31

SELECT POSITION("Топаз", "Топаз");

Резултат: 31

SELECT INSTR("Топаз",'Топаз');

Резултат: 31

SELECT LOCATE("Topaz", "Topaz Plant and LLC Topaz", 9);

Резултат: 20

SELECT LOCATE("Диамант", "Топаз");

Резултат: 0

Функции НАЛЯВО(ред, N)И НАДЯСНО(низ, N)връща съответно най-левия и най-десния N знака в низа.

Пример 6

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

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

SELECT RIGHT("MySQL DBMS", 5);

Резултат: MySQL

Понякога трябва да получите подниз, който започва от дадена позиция. За това се използват следните функции:

  • ПОДНИЗ(низ, позиция, 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.com

функция 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 и базата данни SQL Server 2000. Данни на MicrosoftДостъп с Jet core. Веднага след като базата данни нарасна до няколко хиляди записа или нейните услуги бяха достъпни от няколко

От книгата Windows скриптХост за Windows 2000/XP автор Попов Андрей Владимирович

Изисквания за инсталиране на SQL Server 2000 За да инсталирате SQL Server 2000, ви е необходим компютър с Pentium (или съвместим) процесор с честота поне 166 MHz, пространство на твърдия диск от 95 до 270 MB (270 MB за типична инсталация и 44 MB за Desktop Engine), дисково устройство

От книгата Какво не пише в книгите на Delphi автор Григориев А. Б.

Инсталиране на SQL Server 2000 След като изберете компютър с желаната конфигурация, можете да продължите към инсталацията. Като цяло процесът на инсталиране на SQL Server 2000 е много прост, със следните изключения: отнема много време; по време на инсталационния процес в началото се иска много

От Ръководството за PHP на автора

Основи на SQL Server 2000 След инсталиране и SQL стартиранеСървърът трябва да изпълни следните стъпки, преди да продължи с извличането или запазването на данни: създаване на една или повече бази данни; създаване на таблици в базата данни; създават изгледи и се съхраняват

От книгата XSLT автор Холцнер Стивън

Функции за работа с масиви A2.17 показва функциите, с които можете да създавате нови масиви и да получавате информация за съществуващите Таблица A2.17. Функции за масив Описание на функцията Array(arglist) Връща стойност на Variant, която е

От книгата за Linux: Пълно ръководство автор Колисниченко Денис Николаевич

3.3. Тънкости на работа с низове В този раздел ще разгледаме някои тънкости на работа с низове, които ни позволяват да разберем по-добре какъв код генерира компилаторът за някои на пръв поглед елементарни действия. Не всички дадени тук примери работят по различен начин от

От книгата Изкуството на програмирането със скриптове на Shell от Купър Мендел

От книгата Езикът C - ръководство за начинаещи автор Прата Стивън

Функции на XPath за работа с низове Следните функции на XPath за работа с низове са налични в XSLT: concat(низ низ1, низ низ2,...). Връща конкатенацията (обединението) на всички низове, предадени към него; съдържа (низ низ1, низ низ2). Връща true, ако първият ред съдържа (съдържа) втория

От книгата Linux и UNIX: програмиране на shell. Ръководство за разработчици. автор Тейнсли Дейвид

23.2.2. Функции на паметта Функциите на паметта на Glib изпълняват същите действия като съответните им функции на C. Ето техните прототипи: gpointer g_malloc(gulong size);gpointer g_realloc(gpointer mem, gulong size);void g_free(gpointer

От книгата Описание на езика PascalABC.NET автор Екипът на RuBoard

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

13. Символни низове и функции върху низове

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

ФУНКЦИИ ЗА НИЗОВЕ Повечето C библиотеки предоставят функции, които работят с низове. Нека да разгледаме четири от най-полезните и често срещани: strlen(), strcat(), strcmp() и strcpy(). Вече използвахме функцията strlen(), която намира дължината на низ.

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

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

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

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

Цветови функции Типът цвят цвят е синоним на System.Drawing.Color. функция RGB(r,g,b: байт): цвят; Връща цвят, който съдържа червения (r), зеления (g) и синия (b) компоненти (r,g и b - вариращи от 0 до 255) функция ARGB(a,r,g,b: байт): цвят ; Връща цвета, който съдържа

Тук пълен списъкнизови функции, взети от BOL:

Резултатът е 11. За да разберем кои букви са, можем да използваме функцията CHAR, която връща символ, даден от известния ASCII код (от 0 до 255):

И ето как например можете да получите таблица с кодове за всички букви:

SELECT CHAR(ASCII("a")+ num-1) буква, ASCII("a")+ num - 1 FROM (SELECT 5*5*(a-1)+5*(b-1) + c AS число FROM (ИЗБЕРЕТЕ 1 a UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) x CROSS JOIN (SELECT 1 b UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) y CROSS JOIN ( 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И ПАТИНДЕКС. И двете връщат началната позиция (позицията на първия знак от подниза) на подниза в низа. Функцията CHARINDEX има следния синтаксис:

CHARINDEX ( израз_за_търсене, низ_израз[, начална_позиция])

Ето незадължителен целочислен параметър начална_позицияуказва позицията в низовия израз, от който да се търси израз_за_търсене. Ако този параметър е пропуснат, търсенето се извършва отначало низ_израз. Например молба

Трябва да се отбележи, че ако търсеният подниз или израз на низ е NULL, тогава резултатът от функцията също ще бъде NULL.

Следващият пример определя позициите на първото и второто появяване на знака "a" в името на кораба "California"

И ето, например, как можете да намерите имена на кораби, които съдържат последователност от три знака, първият и последният от които е "e":

Парна баня към НАЛЯВОфункция ДЯСНОвръща дадения брой знаци отдясно на низов израз:

ДЯСНО(<низов израз>,<брой знаци>)

Например, ето как можете да определите имената на кораби, които започват и завършват с една и съща буква:

Тук разделяме името на класа и името на кораба с интервал. Освен това, за да не повтаряме цялата конструкция като аргумент на функцията, използваме подзаявка. Резултатът ще изглежда така:

За да изключите този случай, можете да използвате още един полезна функция лен (<низов израз>) , който връща броя знаци в низ. Ограничаваме се до случая, когато броят на знаците е по-голям от един:

функция РЕПЛИКАЦИЯдопълва константата "abcde" с пет интервала отдясно, които не се вземат предвид от функцията LEN, - и в двата случая получаваме 5.
функция DATAENGTHвръща броя на байтовете в представянето на променливата и ни показва разликата между типовете CHAR и VARCHAR. DATAENGTHще ни даде 12 за CHAR и 10 за VARCHAR.
Както се очаква, DATAENGTHза променлива VARCHAR връща действителната дължина на променливата. Но защо резултатът е 12 за променлива от тип CHAR? Въпросът е, че CHAR е тип фиксирана дължина. Ако стойността на променливата е по-малка от нейната дължина и ние сме декларирали дължината като CHAR(12), тогава стойността на променливата ще бъде „подравнена“ към необходимата дължина чрез добавяне на интервали в края.

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

Ако се изисква подреждане на местата във възходящ ред на редовете, тогава редът трябва да бъде както следва

Ако се ограничим до това, тогава получаваме

Остава да сортираме



Зареждане...
Връх