От книгата Регистър на Windows автор Климов А

Бързо завършване Windows работи(Windows NT/2000/XP) Windows NT версии 3.1 и 3.5 направиха възможно затварянето на всички процеси за 20 секунди. В Windows NT 3.51 и по-нови версии е възможно да се определи времето, което системата трябва да отнеме, за да се изключи. За да направите това, трябва да поправите ключа

От книгата Работа с бази данни с Visual Basic® .NET автор Макманъс Джефри П

ГЛАВА 3 Представяне на SQL Server 2000 В миналото много програмисти започнаха да създават приложения за бази данни, използвайки визуален езикБазови и база данни Microsoft Accessс ядрото Jet. Веднага след като базата данни нарасна до няколко хиляди записа или нейните услуги бяха достъпни от няколко

От книгата Windows Script Host за 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 Server, трябва да изпълните следните стъпки, преди да можете да извличате или запазвате данни: създаване на една или повече бази данни; създаване на таблици в базата данни; създават изгледи и се съхраняват

От книгата 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: байт): цвят ; Връща цвета, който съдържа

Продължаваме да изучаваме езика SQL заявкии днес ще говорим за низ SQL функции . Ще разгледаме основни и често използвани низови функции като: НАМАЛЯВАНЕ, LTRIM, ЗАМЕНЯНЕи други, ще разгледаме всичко, разбира се, с примери.

ИЗБЕРЕТЕ име || фамилия КАТО ФИО ОТ табл

Или за разделяне с интервал enter

ИЗБЕРЕТЕ име || " " || фамилия КАТО ФИО ОТ табл

тези. две вертикални ленти обединяват две колони в една и за да ги разделя с интервал, поставям интервал между тях ( може да се използва всеки знак, като тире или двоеточие) в апостроф и комбиниран също с две вертикални ленти (Transact-SQL използва + вместо две вертикални ленти).

Функция INITCAP

Следва една много полезна функция, INITCAP- който връща стойността в низа, с който започва всяка дума Главна буква, но продължава малък. Това е необходимо, ако не спазвате правилата за попълване на една или друга колона и за да изведете всичко в нея хубава гледкаможете да използвате тази функция, например във вашата таблица има записи в колоната за име със следната форма: ИВАН Иванов или Петър Петров, вие използвате тази функция.

ИЗБЕРЕТЕ INITCAP (име) КАТО FIO FROM таблица

И го получавате така.

UPPER функция

Подобна функция, само че връща всички главни букви, е ГОРЕН.

SELECT UPPER (име) AS FIO FROM таблица

  • име – име на колона;
  • 20 - брой знаци ( дължина на полето);
  • „-“ е знакът, който трябва да бъде подплатен до необходимия брой знаци.

RPAD функция

Нека да разгледаме обратната функция. RPAD- действието и синтаксисът са същите като при LPAD, само символите отдясно се допълват ( в LPAD вляво).

ИЗБЕРЕТЕ RPAD (име, 20, "-") КАТО име ОТ таблицата

Иван------
Сергей-----

Функция LTRIM

Следва също в някои случаи полезна функция, LTRIM- тази функция премахва най-левите символи, които сте посочили. Например, имате колона „град“ във вашата база данни, в която градът е посочен като „Москва“, а има и градове, които са посочени просто като „Москва“. Но трябва да покажете отчета само под формата на „Москва“ без „град“, но как да направите това, ако има такива и такива? Вие просто указвате един вид модел "g." и ако най-левите знаци започват с "r", тогава тези знаци просто няма да бъдат изведени.

ИЗБЕРЕТЕ LTRIM (град) КАТО град ОТ таблицата

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

Функция RTRIM

Също така, нека веднага да разгледаме обратната функция. RTRIM– същото като LTRIM, само знаците се търсят отдясно.

Забележка! В Transact-SQL функциите RTRIM и LTRIM премахват интервалите съответно отдясно и отляво.

Функция REPLACE

Сега помислете за такава интересна функция като ЗАМЕНИТЕ- връща низ, в който всички съвпадения на знаци са заменени с вашите знаци, които сте посочили. За какво може да се използва, например, имате колони в базата данни, в които има някои разделителни знаци, да кажем "/". Например Иван / Иванов, а вие искате да изведете Иван-Иванов, тогава пишете

ИЗБЕРЕТЕ ЗАМЕНА (име, "/", "-") ОТ таблица

и ще имате заместване на знаци.

Тази функция замества само пълното съвпадение на знаци, ако например посочите "-", т.е. три тирета, ще търси само три тирета и няма да замени всяко отделно тире, за разлика от следната функция.

Функция TRANSLATE

ПРЕВОДИТЕе функция за низ, която замества всички знаци в низ със знаците, които сте посочили. Въз основа на името на функцията можете да познаете, че това е подаване на цял ред. Разликата между тази функция и REPLACE е, че замества всеки зададен от вас знак, т.е. имате три символа, да кажем abc и с помощта на TRANSLATE можете да го замените с abc, така че имате a=a, b=b, c=c и според този принцип всички съвпадения на знаци ще бъдат заменени. И ако замените с ЗАМЕНИТЕ, тогава сте търсили само пълно съвпадение на знаците abc, разположени в един ред.

Функция SUBSTR

SUBSTRдадена функция, връща само зададения от вас диапазон от знаци. С други думи, да кажем низ от 10 знака, но не са ви необходими всичките десет, а да кажем, че имате нужда само от 3-8 ( трети до осми). С тази функция можете лесно да направите това. Например, имате някакъв идентификатор с фиксирана дължина в базата данни (като: AA-BB-55-66-CC) и всяка комбинация от знаци означава нещо. И в един прекрасен момент ви беше казано да покажете само 2 и 3 комбинации от символи, за това пишете заявка от следната форма.

ИЗБЕРЕТЕ SUBSTR (идент, "4", "8") ОТ таблица

тези. извеждаме всички символи от 4 до 8 и след тази заявка ще получите това:

Функция LENGTH - дължина на низа

Следната функция също може да бъде полезна, това е ДЪЛЖИНА- който просто брои броя знаци в низ. Например, трябва да разберете колко знака във всяка клетка на колоната "име" са разрешени, таблицата е както следва.

ИЗБЕРЕТЕ ДЪЛЖИНА (име) ОТ таблица

след тази заявка ще получите това.

4
6
7

Тук сме с вас и разгледахме основните функции на SQL низове. В следващите статии ще продължим изучаването на SQL.

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

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

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

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

Ето пълен списък с функции за манипулиране на низове, взети от BOL:

ASCII NCHAR SOUNDEX
CHAR ПАТИНДЕКС ПРОСТРАНСТВО
CHARINDEX ЗАМЕНИТЕ УЛ
РАЗЛИКА QUOTENAME НЕЩА
НАЛЯВО РЕПЛИКАЦИЯ ПОДНИЗ
LEN ОБРАТЕН UNICODE
НИСЪК ДЯСНО ГОРЕН
LTRIM RTRIM

Да започнем с две взаимно обратни функции - ASCIIи CHAR.

Функцията ASCII връща ASCII кода на най-левия символ на низовия израз, който е аргумент на функцията.

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


Трябва да се отбележи, че подобен резултат може да се получи по-просто с помощта на още една функция - НАЛЯВО, който има следния синтаксис:

НАЛЯВО (<низов израз>, <цяло число>)

и премахва броя знаци, даден от втория аргумент отляво на низа, даден от първия аргумент. Така,

ИЗБЕРЕТЕ ОТДЕЛЕН ОТЛЯВ (име, 1) ОТ кораби ПОРЪЧАЙТЕ ПО 1

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

SELECT CHAR(ASCII("a")+ num-1) буква, ASCII("a")+ num - 1
ОТ (ИЗБЕРЕТЕ 5*5*(a-1)+5*(b-1) + c AS номер
FROM (SELECT 1 a UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) x
КРЪСТОСТНА СЪЕДИНКА
(SELECT 1 b UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) y
КРЪСТОСТНА СЪЕДИНКА
(ИЗБЕРЕТЕ 1 c UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) z
) х
WHERE ASCII("a")+ num -1 МЕЖДУ ASCII("a") И ASCII("z")

За тези, които все още не са наясно с генерирането на числова последователност, препращам към съответната статия.

Както знаете, кодовете на малките и главните букви са различни. Следователно, за да получите пълен комплектбез да пренаписвате заявката, просто добавете подобна към горния код:


Вярвам, че няма да е трудно да добавите това писмо към таблицата, ако е необходимо.

Помислете сега за проблема с намирането на желания подниз в низов израз. За това могат да се използват две функции - CHARINDEXи ПАТИНДЕКС. И двете връщат началната позиция (позицията на първия знак от подниза) на подниза в низа. Функцията CHARINDEX има следния синтаксис:

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

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

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

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

SELECT CHARINDEX("a",име) first_a,
CHARINDEX("a", име, CHARINDEX("a", име)+1) second_a
FROM Ships WHERE name="Калифорния"

Моля, имайте предвид, че когато дефинирате втория знак във функцията, се използва началната позиция, която е позицията на знака след първата буква "a" - CHARINDEX("a", име)+1. Правилността на резултата - 2 и 10 - се проверява лесно :-).

Функцията PATINDEX има следния синтаксис:

PATINDEX("% проба%" , низ_израз)

Основната разлика между тази функция и CHARINDEX е, че низът за търсене може да съдържа заместващи символи - % и _. В този случай знаците "%" са задължителни. Например използването на тази функция в първия пример би изглеждало така


Резултатът от тази заявка изглежда така:


Фактът, че получаваме празен набор от резултати като резултат, означава, че няма такива кораби в базата данни. Нека вземем комбинация от стойности - класа и името на кораба.

Извиква се обединяване на две низови стойности в една конкатенация, и в SQL сървърза тази операция се използва знакът "+" (в стандарта "||"). Така,

И ако низовият израз ще съдържа само една буква? Заявката ще го изведе. Това може лесно да се провери чрез писане

Sql функции за низове

Тази група функции ви позволява да манипулирате текст. Има много низови функции, ще разгледаме най-често срещаните.
  • CONCAT(str1,str2...) Връща низ, създаден чрез конкатенация на аргументи (аргументите са посочени в скоби - str1,str2...). Например нашата таблица Доставчици има колона Град и колона Адрес. Да кажем, че искаме Адрес и Град да бъдат в една и съща колона в получената таблица, т.е. искаме да комбинираме данни от две колони в една. За целта ще използваме низовата функция CONCAT(), а като аргументи ще посочим имената на комбинираните колони – град и адрес:

    ИЗБЕРЕТЕ CONCAT(град, адрес) ОТ доставчици;


    Обърнете внимание, че сливането се случи без разделяне, което не се чете много. Нека коригираме нашата заявка, така че да има интервал между колоните, които се съединяват:

    SELECT CONCAT(град, " ", адрес) ОТ доставчици;


    Както можете да видите, интервалът също се счита за аргумент и се посочва, разделен със запетаи. Ако имаше повече колони за комбиниране, тогава би било нерационално да се указват интервали всеки път. В този случай може да се използва функцията string CONCAT_WS(разделител, str1,str2...), който поставя разделител между низовете, които трябва да бъдат свързани (разделителят е посочен като първия аргумент). Нашата заявка ще изглежда така:

    SELECT CONCAT_WS(" ", град, адрес) FROM доставчици;

    Резултатът не се е променил външно, но ако комбинираме 3 или 4 колони, тогава кодът ще бъде значително намален.


  • INSERT(str, pos, len, new_str)Връща низа str, в който поднизът, започващ от позиция pos и имащ дължина len знака, е заменен от подниза new_str. Да предположим, че решим в колоната Адрес (адрес) да не показваме първите 3 знака (съкращения улица и т.н.), тогава ще ги заменим с интервали:

    SELECT INSERT(address, 1, 3, " ") FROM доставчици;


    Тоест три знака, започвайки от първия, се заменят с три интервала.


  • LPAD(str, len, dop_str) Връща низа str отляво, подплатен с dop_str до дължина len. Да речем, че искаме градовете на доставчици да се показват отдясно, като точките запълват празното пространство:

    ИЗБЕРЕТЕ LPAD(град, 15, ".") ОТ доставчици;



  • RPAD(str, len, dop_str) Връща низа str, подплатен отдясно с dop_str до дължина len. Да предположим, че искаме градовете на доставчици да бъдат показани отляво и празното пространство да бъде запълнено с точки:

    ИЗБЕРЕТЕ RPAD(град, 15, ".") ОТ доставчици;


    Обърнете внимание, че стойността на len ограничава броя на знаците за отпечатване, т.е. ако името на града е по-дълго от 15 знака, то ще бъде съкратено.


  • LTRIM(str) Връща низа str с премахнати всички начални интервали. Тази функция за низ е полезна за правилно показване на информация в случаите, когато са разрешени случайни интервали по време на въвеждане на данни:

    ИЗБЕРЕТЕ LTRIM(град) ОТ доставчици;


  • RTRIM(str) Връща низа str с премахнати всички завършващи интервали:

    ИЗБЕРЕТЕ RTRIM(град) ОТ доставчици;

    В нашия случай допълнителни пространстване беше, следователно няма да видим резултата външно.


  • TRIM(str) Връща низа str с премахнати всички водещи и завършващи интервали:

    ИЗБЕРЕТЕ TRIM(град) ОТ доставчици;


  • LOWER(str) Връща низа str с всички символи, преобразувани в малки букви. Не работи правилно с руски букви, така че е по-добре да не го използвате. Например, нека приложим тази функция към градската колона:

    ИЗБЕРЕТЕ град, LOWER(град) ОТ доставчици;


    Вижте каква абракадабра се получи. Но с латинския всичко е наред:

    SELECT LOWER("CITY");



  • UPPER(str) Връща низа str с всички символи, преобразувани в главни букви. Също така е по-добре да не използвате руски букви. Но с латинския всичко е наред:

    SELECT UPPER (имейл) FROM клиенти;



  • LENGTH(str) Връща дължината на низа str. Например, нека разберем колко знака има в адресите на нашите доставчици:

    ИЗБЕРЕТЕ адрес, LENGTH(адрес) ОТ доставчици;



  • LEFT(str, len) Връща len от левите символи на str. Например, нека само първите три знака да бъдат показани в градовете на доставчиците:

    ИЗБЕРЕТЕ име, НАЛЯВО(град, 3) ОТ доставчици;



  • RIGHT(str, len) Връща len от десните символи на str. Например, нека само последните три знака да бъдат показани в градовете на доставчиците: SELECT LOAD_FILE("C:/proverka");
    Моля, обърнете внимание, че трябва да посочите абсолютния път до .

Както вече споменахме, има много повече низови функции, но дори някои от разгледаните тук се използват изключително рядко. Следователно това ще приключи тяхното разглеждане и ще премине към по-често използвани функции за дата и час.