Transakti SQL String -toiminnot. Tietoja SQL String -toiminnoista tai siitä, miten manipuloida tekstiä MySQL-tietokannassa

Tässä on täydellinen luettelo toiminnot, jotka työskentelevät Bol: sta otettujen rivien kanssa:

ASCII. Nchar. Soundex.
Hiiltyä. Patindex. Tilaa.
Charindex. Korvata STR.
Ero Raita Juttu
Vasemmalle. Kopioida. Substring
Len. Käänteinen Unicode.
Alempi Oikea Ylä.
LTRIM. Rtrim.

Aloitetaan kaksi toisiaan käänteisfonseja - ASCII. ja Hiiltyä..

ASCII-toiminto palauttaa vasemmanpuoleisen merkkijonon lausekkeen ASCII-koodin, joka on toiminnon argumentti.

Tässä tapauksessa määritetään, kuinka paljon on olemassa erilaisia \u200b\u200bkirjeitä, joista alusten nimet alkavat alusten taulukossa:


On huomattava, että samanlainen tulos voidaan saada helpommaksi yhdellä toiminnolla - Vasemmalle.Mikä on seuraava syntaksi:

Vasemmalle (<merkkijono>, <kokonaisluku>)

ja leikkaa merkkejä toiseen argumenttiin, mikä on ensimmäinen väite, jonka toinen väite on määritelty. Niin,

Valitse erillinen vasemmalla (nimi, 1) aluksista tilauksesta 1

Mutta kuinka esimerkiksi saat kaikki aakkosellisten merkkien koodit:

Valitse Char (ASCII ("A") + num-1) kirjain, ASCII ("A") + numero - 1
(Valitse 5 * 5 * (A-1) + 5 * (B-1) + C numeroksi
(Valitse 1 A 9 Union Kaikki valitse 2 Union Kaikki valitse 3 Union Kaikki valitse 4 Union Kaikki valitse 5) X
Cross Liity.
(Valitse 1 B UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) Y
Cross Liity.
(Valitse 1 C UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) Z
) X.
Missä ASCII ("A") + num -1 välillä ASCII ("A") ja ASCII ("Z")

Ne, jotka eivät ole ajan tasalla numeerisen sekvenssin kanssa lähettämällä asianmukaiseen artikkeliin.

Kuten tiedätte, pienet kirjaimet ja isot kirjaimet eroavat toisistaan. Siksi saada täydellinen asetettu pyyntö uudelleen kirjoittamatta uudelleen, se riittää vain lisätä edellä mainittuun koodiin samanlainen:


Uskon, että tätä kirjettä ei ole tarpeen lisätä tätä kirjettä tarvittaessa.

Tarkastelemme nyt tehtävää määrittää halutun substringin etsintä merkkijonon ilmaisussa. Tätä varten voidaan käyttää kaksi toimintoa - Charindex. ja Patindex.. Molemmat palauttavat alkuperäisen sijainnin (ensimmäisen substring-symbolin sijainti) rivillä. Charindex-ominaisuus on syntaksi:

Charindex ( seeching_some, string_inpektio[, start_position])

Tässä on valinnainen kokonaislukuparametri start_position määrittää sijainnin merkkijonon ilmentämisessä, josta haku suoritetaan haluttu) . Jos tämä parametri jätetään pois, haku suoritetaan alusta alkaen string_dasses. Esimerkiksi kysely

On huomattava, että jos on nolla, haluttu substraatti joko merkkijonon ilmentyminen, sitten tulos on myös nolla.

Seuraava esimerkki määrittää symbolin "A" ensimmäisen ja toisen merkinnän sijainnin aluksen "Kalifornian" nimessä

Valitse Charindex ("A", nimi) First_a,
Charindex ("A", nimi, Charindex ("A", nimi) +1) SECOLD_A
Aluksista, joissa nimi \u003d "Kalifornia"

Huomaa, että toisen merkin määrittämisessä käynnistysasema käytetään toiminnossa, joka on merkin "A" sijainti "Charindex (" A ", nimi) +1. Tuloksen oikeellisuus on 2 ja 10 - on helppo tarkistaa :-).

Patindex-ominaisuus on syntaksi:

Patindex ("% näyte%" , string_inpektio)

Tämän tehtävän tärkein ero Charindexista on se, että haku-merkkijono voi sisältää laimikkeitä -% ja _. Tällöin terminaalimerkit "%" ovat pakollisia. Esimerkiksi tämän toiminnon käyttäminen ensimmäisessä esimerkissä on


Tämän pyynnön tulos on seuraava:


Se, että tämän seurauksena saamme tyhjän tuloksena, tarkoittaa, että tietokannassa ei ole tällaisia \u200b\u200baluksia. Otetaan yhdistelmä arvoja - luokka ja aluksen nimi.

Kahden merkkijonon arvon liitäntä yhdessä kutsutaan concattenationja B. SQL Server Tätä toimintoa käytetään "+" -merkkiä (standardissa "||"). Niin,

Ja jos merkkijono ilmaisu sisältää vain yhden kirjaimen? Pyyntö johtaa sitä. Tämä on helppo varmistaa kirjoittamalla

Tänään ehdotan yksinkertaisia \u200b\u200besimerkkejä käytöstä transact-SQL String -toiminnot, eikä vain kuvaus ja esimerkkejä joistakin toiminnoista ja niiden yhdistelmästä, ts. Kuten voit sijoittaa ne toisiinsa, koska ei riitä toteuttamaan monia vakiotoimintojen tehtäviä ja sinun on käytettävä niitä yhdessä. Ja niin haluaisin näyttää sinulle muutaman yksinkertaisen esimerkin tällaisten pyyntöjen kirjoittamisesta.

Olemme jo pitäneet SQL: n merkkijonotoimintoja, mutta koska tämän kielen toteutus eri DBMS: ssä on erilainen, kuten jotkin toiminnot eivät ole Transact-SQL: ssä, ja PL / PGSQL, ne ovat, ja juuri viime kerralla katsottiin String-toiminnot, joita voit käyttää PLPGSQL: ssä ja siksi tänään puhumme Transact-SQL: stä.

Miten voit yhdistää substring, charindex ja len

Ja niin esimerkiksi sinun on etsittävä linja-osassa tietyn kriteerin yli ja leikata se, eikä vain etsi samaa tyyppiä, mutta dynaamisesti eli ts. Jokaiselle riville hakujono on erilainen. Esimerkkejä kirjoitetaan Management Studio SQL Server 2008: ssä.

Tätä varten käytämme seuraavia toimintoja:

  • Substring(STR, START, LEN) - Tämä toiminto leikkaa osa riviä toisesta rivistä. Siinä on kolme parametriä 1. Se on itse merkkijono; 2. Alkuperäinen asema, mitä on aloitettava leikkaus; 3. Merkkien lukumäärä, jotka on tarpeen leikata.
  • Charindex.(STR1, STR2) - Etsitkö STR1 STR2: ssä ja palauttaa ensimmäisen merkin järjestysnumeron tällaisen rivin tapauksessa. Siinä on kolmas ei pakollinen parametri, jonka avulla voit määrittää haun käynnistämisen.
  • Len. (STR1) -Tlin-merkkijono, ts. Merkkejä.

Kuten näette, tässä käytin muuttujien julistusta ja muuttujien sijaan voit korvata kentät kyselyssä. Tässä on itse koodi:

Julistaa @rezult kuin Varchar (10) - Mikä on linja ilmoittaa @ STR1 kuin Varchar (100) julistaa julistaa @ STR2 Varchar (10) Aseta @ STR1 \u003d "Trial String String etsiä toisen rivin" Set @ str2 \u003d "merkkijono "Aseta @ Rezult \u003d substring (@ STR1, Charindex (@ Str2, @ STR2, @ STR1), LEN (@ STR2)) Valitse @Rezult

Tässä merkitys tässä on täällä, jossa Len-toiminnon avulla voit oppia kuinka monta merkkiä sinun on leikattava, ja Charindex määrittää sijainnin, jonka kanssa haluat leikata, ja vastaavasti substring suorittaa itse näyte rivillä.

Miten voit yhdistää vasemmalle, oikealle ja leenille

Oletetaan, että sinun täytyy saada ensimmäiset merkit riviin tai tarkista nämä ensimmäiset merkit rivillä, esimerkiksi jonkin verran, ja sen pituus on luonnollisesti erilainen (esimerkki on luonnollinen testi).

  • Vasemmalle. (STR, KOL) - Toiminnot leikkaavat tietyn määrän merkkejä Levistä, sillä on kaksi ensimmäistä riviparametria ja toinen, vastaavasti merkkien lukumäärä;
  • Oikea (STR, KOL) - Toiminnot leikkaavat määritetyn määrän merkkejä oikealla, parametrit ovat samat.

Nyt käytämme yksinkertaisia \u200b\u200bpyyntöjä pöydälle.

Ensin luodaan testi_table-taulukko:

Luo taulukko (identiteetti (1,1) ei , (18, 0) nolla, (50) nolla, rajoitus ensisijainen avainklusteroitu (ASC) (ASC) (Pad_index \u003d Pois, tilastot_norecompute \u003d Pois, ignore_dup_key \u003d OFF, Allow_Row_locks \u003d ON, Allow_page_locks \u003d Päällä) liikkeellä

Täytä se testitiedotuksella ja kirjoita tällaiset kyselyt:

Kun ymmärrät ensimmäisen pyynnön, se on vain näyte kaikista riveistä (SQL - Select Statement), ja toinen on jo toimintojen yhdistelmä, tässä on koodi:

Valitse * test_table Valitse numero, vasen (teksti, len) test_table

Ja jos nämä numerot olivat oikeassa, käytämme toimintoa Oikea.

Käyttämällä rtrim, ltrim, ylempi ja pienempi yhdistelmänä

Sinulla on merkkijono, jossa on välilyöntejä alussa ja lopussa, ja haluat tietenkin päästä eroon heistä ja enemmän, esimerkiksi tehdä, joten ensimmäinen kirjain tässä linjassa on tullut otsikko.

  • Rtrim. (STR) - Oikeuden aukot;
  • LTRIM.(STR) - Poistaa välilyönnit vasemmalla;
  • Ylä.(STR) - johtaa merkkijono isoihin;
  • Alempi(STR) - antaa merkkijonon pienille kirjaimille.

Kuten näet, konsolidointiin käytettiin myös täällä ja Substring ja Len.. Pyynnön merkitys on yksinkertainen, poistamme aukot ja oikealla ja vasemmalla, antavat sitten ensimmäisen symbolin ylimmälle rekisteriin leikkaamalla sen, sitten Concatenate (operaattori +) tämä symboli jäljellä olevalla merkkijonolla. Tässä on koodi:

Julistaa @ STR1 Varchar (100) Aseta @ STR1 \u003d "Testausjono, jossa välilyöntejä alussa ja lopussa" Valitse @ STR1 Valitse ylempi (substring (rtrim (@ STR1), 1,1) + alempi (alustaan \u200b\u200b(RTRIM) (LTRIM (@ STR1)), 2, LEN (RTRIM (LTRIM (@ STRIM (@ STR1)) - 1))

Tänään mielestäni tarpeeksi, ja jos haluat ohjelmoida SQL: ssä, olemme toistuvasti vaikuttaneet tähän erittäin mielenkiintoiseen aiheeseen.

Tässä on täydellinen luettelo toiminnot, jotka työskentelevät Bol: sta otettujen rivien kanssa:

Tulos - 11. Selvitä, mitä kirjeet on, voimme soveltaa Char-toimintoa, joka palauttaa merkin tunnettuun ASCII-koodiin (0 - 255):

Mutta kuinka esimerkiksi saat kaikki aakkosellisten merkkien koodit:

Valitse Char (ASCII ("A") + Num-1) Letter, ASCII ("A") + Num - 1 (Valitse 5 * 5 * (A-1) + 5 * (B-1) + C numeroksi (Valitse 1 Ali Union ALL SELECT 2 UNION ALL SELECT 3) Kaikki valitse 4 Union Kaikki valitse 5) X Cross Liity (Valitse 1 B UNION ALL ALL SELECT 2 UNION ALL SELECT 3 UNION ALL ALL SELECT 4 UNION ALL SELECT 5) Y CROSE Liity ( Valitse 1 C UNION ALL KAIKKI SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) Z) X ASCII ("A") + NUM -1 välillä ASCII ("A") ja ASCII ("Z")

Ne, jotka eivät ole ajan tasalla numeerisen sekvenssin kanssa lähettämällä asianmukaiseen artikkeliin.

Kuten tiedätte, pienet kirjaimet ja isot kirjaimet eroavat toisistaan. Siksi saada täydellinen asetettu pyyntö uudelleen kirjoittamatta uudelleen, se riittää vain lisätä edellä mainittuun koodiin samanlainen:

Uskon, että tätä kirjettä ei ole tarpeen lisätä tätä kirjettä tarvittaessa.

Tarkastelemme nyt tehtävää määrittää halutun substringin etsintä merkkijonon ilmaisussa. Tätä varten voidaan käyttää kaksi toimintoa - Charindex. ja Patindex.. Molemmat palauttavat alkuperäisen sijainnin (ensimmäisen substring-symbolin sijainti) rivillä. Charindex-ominaisuus on syntaksi:

Charindex ( seeching_some, string_inpektio[, start_position])

Tässä on valinnainen kokonaislukuparametri start_position määrittää sijainnin merkkijonon ilmentämisessä, josta haku suoritetaan haluttu) . Jos tämä parametri jätetään pois, haku suoritetaan alusta alkaen string_dasses. Esimerkiksi kysely

On huomattava, että jos on nolla, haluttu substraatti joko merkkijonon ilmentyminen, sitten tulos on myös nolla.

Seuraava esimerkki määrittää symbolin "A" ensimmäisen ja toisen merkinnän sijainnin aluksen "Kalifornian" nimessä

Mutta esimerkiksi, miten löydän alusten nimet, jotka sisältävät kolmen merkkiä, ensimmäinen ja viimeinen, joista viimeinen on "e":

Pari Vasemmalle. toiminto Oikea Palauttaa määritetyn numeron merkkijonon oikealla puolella:

Oikea (<merkkijono>,<merkkien määrä>)

Tässä tapauksessa, miten voin määritellä alusten alusten nimet, jotka alkavat samassa kirjeessä:

Täällä jaamme luokan nimen ja aluksen nimen. Lisäksi ei toista koko suunnittelua funktionaaliseksi, käytämme alaluokkia. Tulos tarkastellaan:

Tämän tapauksen poistamiseksi voit käyttää toista hyödyllistä ominaisuutta. Len (<merkkijono>) joka palauttaa merkkijonon merkkijonon. Rajoitamme itse asiassa, kun merkkien määrä on suurempi kuin:

Toiminto Kopioida. täydentää "ABCDE" vakio viisi tilaa oikealla puolella, joita ei oteta huomioon toiminnossa Len.- Molemmissa tapauksissa saamme 5.
Toiminto Datapituus. Palauttaa tavujen määrän muuttujan edustuksessa ja osoittaa meille eron Char ja Varchar -tyyppien välillä. Datapituus. Anna meille 12 tyyppi Char ja 10 - Varcharille.
Odotetusti, Datapituus. Muuttujan tyyppi Varchar palautti todellisen muuttujan pituuden. Mutta miksi muuttujan tyyppikarjan tulos on osoittautunut 12? Tosiasia on, että Char on tyyppi kiinteä pituus. Jos muuttujan arvo on pienempi kuin sen pituus, ja julistamme pituuden CHAR (12), muuttujan arvo on "kohdistettu" haluttuun pituuteen lisäämällä päätypaikkoja.

Sivustolla on tehtäviä, joissa haluat virtaviivaistaa (löytää enimmäismäärän jne.) Tekstimuodossa esitetyt numeeriset tilausarvot. Esimerkiksi ilma-aluksen huone ("2D") tai CD-nopeus ("24x"). Ongelma on siinä, että teksti on lajiteltu niin (nouseva)

Jos on välttämätöntä tehostaa paikkoja kasvattaa rivejä, tilauksen pitäisi olla sellainen

Jos vain se rajoittuu, niin saamme

Se on edelleen lajittelu

Hei, Hyvä blogi lukijat verkkosivuilla. Tänään haluaisin puhua SQL-kielestä ja erityisesti tekstin käsittelytoiminnasta. Voit luoda ja hallita sivustoa, ei useinkaan ole tarpeen tietää SQL-kieltä. Sisältöhallintajärjestelmien avulla voit muokata sisältöä kirjoittamatta pyyntöjä. Mutta ainakin pinta tutustuminen pyyntöjen jäsennelty kielellä auttaa sinua merkittävästi nopeuttamaan sivuston tietokannan muokkausta ja tiedonhallintaa.

Ennen minusta tehtäviä esiintyy usein: poista osa tekstistä tietokannan tekstikenttäkentästä, yhdistää merkkijonon tiedot tai jotain muuta tekstiin. Tee kaikki tämän sivuston hallintapaneelien kautta ovat erittäin epämiellyttäviä ja voimakkaasti. On paljon helpompi kirjoittaa pyyntö tietokantaan, joka suorittaa kaikki nämä toimet muutamassa sekunnissa.

Joten, aloitamme ...

Symboliset toiminnot SQL-kielellä

Aloitetaan yksinkertaisimmista. Ensinnäkin harkitse ASCII String -toimintoa, jota käytetään tekstimuotojen ASCII-koodin määrittämiseen:

kokonaisluku ASCII.(STR. merkkijono)

Toiminto palauttaa ensimmäisen vasemman merkkijonon merkkijonon kokonaislukuarvo - ASCII-koodin. Jos merkkijono on tyhjä palaa 0 ja nolla, jos merkkijonoa ei ole olemassa.

Valitse ASCII ("T");
Tulos: 116.
Valitse ASCII ("testi");
Tulos: 116.
Valitse ASCII (1);
Tulos: 49.

kokonaisluku ORD.(STR. merkkijono)

Jos ensimmäinen vasemmanpuoleinen merkkijono on Multibyte, palauttaa koodin muodossa: ((ensimmäinen tavuavustus) * 256 + (toinen tavu ASCII-Coder)) [* 256 + kolmas tavu ASCII -Kod ...]. Jos ensimmäinen vasen merkkijono merkki ei ole multibyte, se toimii ASCII-toiminnossa - palauttaa ASCII-koodinsa.

Valitse ORD ("testi");
Tulos: 116.

Char-toiminto, joka liittyy läheisesti ASCII-toimintoon ja suorittaa päinvastoin:

merkkijono Hiiltyä.(int kokonaisluku, ...)

Char-toiminto palauttaa merkkijonon ASCII-koodille. Jos arvoa kohdistuu arvojen kesken, se ohitetaan.

Valitse Char (116, "101", 115, "116");
Tulos: "Test"

SQL-toiminnot soutu

Yksi suosituimmista toimintoluokista. Loppujen lopuksi on usein tarpeen yhdistää sivuston tietokantataulukoiden useiden kenttien arvot. SQL: ssä on useita toimintoja kerralla merkkijonon yhdistyminen.

CONCAT-toiminto:

merkkijono Concat.(STR1 merkkijono, STR2. merkkijono,...)

Toiminto palauttaa merkkijonon, joka on luotu yhdistämällä argumentteja. Voit määrittää enemmän kuin kaksi argumenttia. Jos jokin argumentteista on nolla, palautettu tulos on nolla. Numeeriset arvot muunnetaan merkkijonoksi.

Valitse Concat ("Hei", "", "maailma", "!");
Tulos: "Hei World!"
Valitse Concat ("Hei", Null, "World", "!");
Tulos: null
Valitse Concat ("Pi", "\u003d", 3.14);
Tulos: "numero Pi \u003d 3.14"

Kuten esimerkeistä voidaan nähdä, merkkijonot yhdistetään ilman erottimia. Jotta voit jakaa sanat ensimmäisessä esimerkissä, argumenttina sinun on käytettävä tilaa. Jos sanat olivat enemmän, aina kun se ei olisi kovin kätevästi lisätä tiloja.

Tällaisissa tapauksissa on confat_ws-toiminto:

merkkijono Concat_ws.(Erotin. merkkijono, STR1 merkkijono, STR2. merkkijono,...)

Toiminto yhdistää merkkijonot sekä concat-toiminto, mutta lisää erottimen erottimen argumenttien väliin. Jos erottimen argumentti on nolla, tulos on nolla. Argumentit merkkijono yhtä suuri nuija ohitetaan.

Valitse CONCAT_WS ("", "Ivanov", "Ivan", "Ivanovich");
Tulos: "Ivanov Ivan Ivanovich"
Valitse Concat_ws (Null, Ivanov, Ivan, Ivanovich);
Tulos: null
Valitse CONCAT_WS ("", "Ivanov", nolla, "Ivan", "Ivanovich");
Tulos: "Ivanov Ivan Ivanovich"

Jos erottimen on erotettava suuri määrä rivejä, jotka on erotettava erottimella, Concat_WS-toiminto on paljon kätevämpää Concat-toiminnassa.

Joskus on välttämätöntä pidentää merkkijonoa tiettyyn merkkeihin, koska symboli toistuminen johtuu. Tämä on myös eräänlainen rivi yhdistelmä. Tätä varten voit käyttää toimintoja LPAD. ja RPAD.. Toiminnoilla on seuraava syntaksi:

merkkijono LPAD.(STR. merkkijono, Len. kokonaisluku, Padstr. merkkijono)
merkkijono RPAD.(STR. merkkijono, Len. kokonaisluku, Padstr. merkkijono)

LPAD-toiminto palauttaa STR: n STR: n, jota täydennetään Padstrin vasemmalla merkkijonolla Len-pituuteen. RPAD-toiminto toimii myös samana, vain venymä tapahtuu oikealla puolella.

Valitse LPAD ("Test", 10, ".");
Tulos: ...... testi
Valitse RPAD ("Test", 10, ".");
Tulos: Testi ......

Näiden ominaisuuksien on kiinnitettävä huomiota len.jotka rajoittavat tulostusmerkkien määrää. Siksi, jos merkkijonon pituus STR on enemmän kuin Len-parametri, merkkijono leikataan:

Valitse LPAD ("Test", 3, ".");
Tulos: TES.

Merkkijonon määrittäminen SQL-kyselyissä

SQL-kielen merkkijonon merkkijonon määrittäminen, pituustoiminto vastataan - merkkijonon pituus:

kokonaisluku Pituus.(STR. merkkijono)

Toiminto palauttaa kokonaisluku, joka on yhtä suuri kuin merkkijonon merkkijono.

Valitse pituus ("testi");
Tulos: 4.

Multibyte-koodauksien käytössä olevassa tapauksessa pituusfunktio näyttää väärän tuloksen. Jos esimerkiksi Unicode-koodaus on määritetty, kysely:

Valitse pituus ("testi");

palaa 8. Mitä, se on helppo huomata, kahdesti todellista merkkiä. Tällöin sinun on käytettävä Char_Length-toimintoa:

kokonaisluku Char_length.(STR. merkkijono)

Toiminto palaa myös pituuslinja Str ja tukevat Multibyte-merkit.

Esimerkiksi:

Valitse Char_Length ("testi");
Tulos: 4.

Hae alustaan \u200b\u200bmerkkijonossa SQL: n kanssa

Lasketaan alasalustan sijainti SQL: ssä SQL: ssä on useita toimintoja. Ensimmäinen, jota pidämme, toiminto-asema:

kokonaislukuSijainti(substr. merkkijonoStr. merkkijono)

Palauttaa ensimmäisen merkinnän substring-substrin sijainnin numeron merkkijonossa ja palaa 0, jos substring ei löydy. Paikkatoiminto voi toimia monibyte-merkkeinä.

Valitse sijainti ("CD" kohdassa "ABCDCDE");
Tulos: 3.
Valitse sijainti ("XY" kohdassa "ABCDCDE");
Tulos: 0.

Seuraavassa Etsi-ominaisuuden avulla voit aloittaa substringin etsimisen tietystä paikasta:

kokonaisluku Paikantaa.(substr. merkkijonosTR. merkkijonoPos. kokonaisluku)

Palauttaa ensimmäisen merkinnän substring-substr-aseman merkkijonon Str: llä, joka alkaa POS-asennosta. Jos POS-parametria ei ole määritetty, haku suoritetaan linjan alusta. Jos substr-alustaan \u200b\u200bei löydy, se palaa 0. Tukee multibyte-merkkejä.

Valitse Etsi ("CD", "ABCDCDDE", 5);
Tulos: 5.
Valitse Etsi ("CD", "ABCDCDDE");
Tulos: 3.

Analoginen sijainti ja sijaintitoiminnot ovat instr-toiminto:

kokonaisluku Instr.(STR. merkkijono, substr. merkkijono)

Myös edellä mainitut toiminnot palauttavat STRST Str: n substringin ensimmäisen merkinnän sijainnin. Ainoa ero aseman toiminnasta ja paikannus on, että väitteitä muutetaan paikoissa.

Mielentämme ensin vasemman ja oikean toiminnon, jotka ovat samankaltaisia \u200b\u200btoiminnassa:

merkkijono Vasemmalle.(STR. merkkijono, Len. kokonaisluku)
merkkijono Oikea(STR. merkkijono, Len. kokonaisluku)

Vasen toiminto palauttaa Lenin ensimmäiset merkit merkkijonosta ja oikea toiminto samana. Tuki multibyte-merkkejä.

Valitse vasemmalla ("Moskova", 3);
Tulos: MOS.
Valitse oikea ("Moskova", 3);
Tulos: KVA.

merkkijono Substring(STR. merkkijonoPos. kokonaisluku, Len. kokonaisluku)
merkkijono Puolivälissä(STR. merkkijonoPos. kokonaisluku, Len. kokonaisluku)

Toimintojen avulla voit saada merkkijonon merkkijono Len-symbolit POS-asennosta. Jos LEN-parametria ei ole määritetty, koko substring palautetaan POS-asennosta.

Valitsemalla ("Moskova - Venäjän pääkaupunki", 4, 6);
Tulos: Moskova
Valitsemalla ("Moskova - Venäjän pääkaupunki", 4);
Tulos: Moskova - Venäjän pääkaupunki

Esimerkkejä Mid-toiminnolla eivät tuota, koska tulokset ovat samankaltaisia.

Mielenkiintoinen piirre substring_index:

merkkijono Substring_index.(STR. merkkijono, Delim merkkijono, Kreivi kokonaisluku)

Toiminto palauttaa STR-string-substringin, joka saadaan poistamalla merkit, jotka kulkevat laskentaasennossa sijaitsevan Delim-erottimen jälkeen. Laskun parametri voi olla sekä positiivinen, niin negatiivinen. Jos laskenta on positiivinen, erottimen aseman lähtölaskenta pidetään vasemmalla ja erottimen oikealla puolella olevat merkit poistetaan. Jos laskenta on negatiivinen, erottimen sijainnin lähtölaskenta suoritetaan oikealla ja merkit poistetaan erottimen vasemmalla puolella. Ehkä kuvaus oli liian hämmentävä, mutta esimerkit selkeytyvät.

Valitse substring_index ("www.mysql.ru", ".", 1);
Tulos: www

Tässä esimerkissä funktio toteaa, pisteen symbolin ensimmäinen merkintä merkkijonossa "www.mysql.ru" ja poistaa kaikki sen jälkeen, kun se erotin on.

Valitse substring_index ("www.mysql.ru", ".", 2);
Tulos: www.mysql

Tässä funktio etsii toista merkintäpistettä, poistaa kaikki merkit oikealla puolella ja palauttaa tuloksena olevan substringin. Ja vielä yksi esimerkki laskentaparametrin negatiivisella arvolla:

Valitse substring_index ("www.mysql.ru", ".", -2);
Tulos: MySQL.ru.

Tässä esimerkissä substring_index-ominaisuus etsii toista pistettä, laskemalla oikealla oleva asema, poistaa merkin vasemmalla puolella ja antaa tuloksena olevan substringin.

Poistavat aukkoja riviltä

Jos haluat poistaa tarpeettomia aukkoja SQL: n rivin alusta ja loppua, on kolme toimintoa.

LTRIM-toiminto:

merkkijono LTRIM.(STR. merkkijono)

Tarjoaa merkkijono-merkkijonojen alusta ja palauttaa tuloksen.

RTRIM-toiminto:

merkkijono Rtrim.(STR. merkkijono)

Poistaa myös tiloja merkkijonoista, vain lopulta. Molemmat toiminnot tukevat multibyte-merkkejä.

Valitse ltrim ("teksti");
Tulos: "Teksti"
Valitse rtrim ("teksti");
Tulos: "Teksti"

Ja kolmas leikkaustoiminto mahdollistaa välittömästi välittömästi tiloja alusta lähtien ja linjan päässä:

merkkijono Trimmata([ merkkijonoAlkaen] str. merkkijono)

STR-parametri vaaditaan, jäljellä olevat parametrit eivät ole pakollisia. Jos vain yksi STR-parametri on määritetty, se palauttaa STR: n STR: n irrottaa tiloja merkkijonon alusta ja päästä samanaikaisesti.

Valitse Trim ("Teksti");
Tulos: "Teksti"

Remstr-mittarin höyryn avulla voit asettaa merkkejä tai substringia, jotka poistetaan rivin alusta ja päältä. Molempien johtavien ohjausparametrien avulla voidaan kysyä, mistä merkkiä poistetaan:

  • Molemmat - poistaa RURSTR-substring alusta lähtien ja linjan päässä;
  • Johtava - poistaa RURSTR: n merkkijonon alusta;
  • TRAKING - Poistaa RURSTR: n linjan päästä.

Valitse Trim (molemmat "A" "teksti");
Tulos: "Teksti"
Valitse Trim (johtava "A" "TEXTAAA");
Tulos: "Textaa"
Valitse Trim (jäljellä "A" "AAATEST");
Tulos: "AAATEXT"

Space-ominaisuuden avulla voit saada merkkijonon, joka koostuu tiettyyn tiloihin:

merkkijono Tilaa.(N. kokonaisluku)

Palauttaa merkkijonon, joka koostuu n aukkoista.

Vaihda toiminto on tarpeen vaihda määritetyt merkit merkkijonossa:

merkkijono Korvata(STR. merkkijono, From_str merkkijono, to_str. merkkijono)

Toiminto korvaa String String All from_str on to_str ja palauttaa tuloksen. Tukee multibyte-merkkejä.

Valitse Vaihda ("Alustan vaihto", "substrits", "Teksti")
Tulos: "Korvausteksti"

Toista toiminto:

merkkijono Toistaa.(STR. merkkijono, Kreivi kokonaisluku)

Toiminto palauttaa merkkijonon, joka koostuu Count toistuvista merkkijono str. Tukee multibyte-merkkejä.

Valitse Toista ("W", 3);
Tulos: "www"

Käänteinen toiminto kääntää merkkijonon:

merkkijono Käänteinen(STR. merkkijono)

Tarjoaa kaikki merkit viimeisestä ensimmäisestä ja palauttavat tuloksen merkkijonon Str. Tukee multibyte-merkkejä.

Valitse käänteinen ("teksti");
Tulos: "Tket"

Insert-toiminto alipaikan asettamiseksi merkkijonossa:

merkkijonoLisää.(STR. merkkijonoPos. kokonaisluku, Len. kokonaisluku, Newstr. merkkijono)

Palauttaa merkkijonon, joka on saatu sisäänpäin insertiosta Str str -alustat Newstr-asemasta. LEN-parametri ilmaisee, kuinka monta merkkiä poistetaan merkkijono-STR: stä alkaen POS-asennosta. Tukee multibyte-merkkejä.

Valitse Lisää ("Text", 2, 5, "MySQL");
Tulos: "TMYSQL"
"Valitse Lisää (" Text ", 2, 0," MySQL ");
Tulos: "TMYSQLEXT"
Valitse Lisää ("Lisää teksti", 2, 7, "MySQL");
Tulos: "Valitse Lisää (" Text Insert ", 2, 7," MySQL ");"

Jos yhtäkkiä on lainattava tekstissä kaikki isot kirjaimet isoihin kirjaimiin, voit käyttää yhtä kahdesta toiminnosta:

merkkijono Lasikko.(STR. merkkijono) I. merkkijono Alempi(STR. merkkijono)

Molemmat toiminnot korvataan STR-isot kirjaimet pääomaan ja palauttaa tulos. Ja toinen tuki multibyte-merkkiä.

Selcet alempi ("abvgdejzick");
Tulos: "Abbgdjzick"

Jos päinvastoin, isot kirjaimet olisi korvattava pääomalla, voit myös soveltaa yhtä kahdesta toiminnosta:

merkkijono Ukirja.(STR. merkkijono) I. merkkijono Ylä (STR. merkkijono)

Toiminnot palauttavat merkkijonon Str, korvaamalla kaikki pääomamerkit otsikossa. Tukee myös multibyte-merkkejä.
Esimerkki:

Valitse ylempi ("abvgdezhz");
Tulos: "Abbgdjz"

SQL-kielen merkkijonot ovat hieman enemmän, joita pidetään tässä artikkelissa. Mutta koska jopa suurin osa tässä käsiteltyistä toiminnoista käytetään harvoin, lopetan heidän harkitsevansa. Seuraavissa artikkeleissa yritän harkita todellisia käytännön esimerkkejä merkkijonotoimintojen käyttämisestä SQL. Siksi älä unohda tilata blogipäivityksiä. Uusiin kokouksiin!


Alla on täydellinen luettelo Bol: sta otetuista merkkijonotoiminnosta:

ASCII. Nchar. Soundex.
Hiiltyä. Patindex. Tilaa.
Charindex. Korvata STR.
Ero Raita Juttu
Vasemmalle. Kopioida. Substring
Len. Käänteinen Unicode.
Alempi Oikea Ylä.
Rtrim. Rtrim.

Let "s alkaen kahdesta vastavuoroisesti liittyvästä toiminnosta - ASCII. Ja. Hiiltyä:

ASCII-toiminto palauttaa merkkien ilmaisun vasemmanpuoleisen merkin ASCII-koodin, koska se on toiminto-argumentti.

Tässä on esimerkki siitä, miten monet eri kirjaimet, jotka alusten alusten nimet alkavat ovat:

Valitse laskenta (erillinen ASCII (nimi)) aluksista

Tulos on 11. Selvitä, mitä nämä kirjaimet ovat, voimme käyttää Char-toimintoa, joka palauttaa merkin tunnetulla ASCII-koodilla (0 - 255):

Valitse erillinen char (ASCII (nimi)) aluksista tilauksesta 1

Meidän on huomattava, että identtinen tulos voi olla yksinkertaisempi käyttäen yhtä toimintaa - Vasemmalle. Kuin on seuraava syntaksi:

Vasemmalle (<merkki_expression.>, <integer_expression.>)

ja palauttaa merkkijonon osan, joka alkaa määrätystä määrästä merkkejä vasemmalta. NIIN,

Valitse erillinen vasemmalla (nimi, 1) aluksista tilauksesta 1

Ja tämä on tapa saada kaikki aakkosellinen merkkien koodit:

Valitse Char (ASCII ("A") + num-1) kirjain, ASCII ("A") + numero - 1

(Valitse 1 Ali Union All Select 2 Union Kaikki valitse 3 Union Kaikki valitse 4 Union Kaikki valitse 5) x
Cross Liity.
Cross Liity.
) X.
Missä ASCII ("A") + num -1 välillä ASCII ("A") ja ASCII ("Z")

Niille, jotka eivät ole tietoisia numeerisen sekvenssin tuottamisesta, viitän vasariaan vastaavaan artikkeliin.

On tunnettua, että pienet kirjaimet ja isot kirjaimet eroavat toisistaan. Tämä "miksi saada koko joukko ilman kirjoittamatta kyselyä; se riittää kirjoittamaan identtisen koodin edellä mainittuun:

liitto
Valitse Char (ASCII ("A") + num-1) kirjain, ASCII ("A") + numero - 1
Alkaen.
Valitse 5 * 5 * (A-1) + 5 * (B-1) + C numerona
(Valitse 1 Ali Union All Select 2 Union Kaikki valitse 3 Union Kaikki valitse 4 Union Kaikki valitse 5) x
Cross Liity.
(Valitse 1 B UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) Y
Cross Liity.
(Valitse 1 C UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) Z
) X.
Missä ASCII ("A") + num -1 välillä ASCII ("A") ja ASCII ("Z")

Nyt katsotaan, että tehtävänä on etsiä alipaikkoja merkkijonossa. Kaksi toimintoa voidaan käyttää tähän: Charindex. Ja. Patindex.. Molemmat palauttavat alkuasennon (aluston ensimmäisen merkin sijainti) osan merkkijonossa. Toiminnalla Charindexilla on seuraava syntaksi:

Charindex ( string_expression, target_expression [, start_Location])

Täällä valinnainen kokonaisluku parametri sTART_LOCATION Määrittää aseman a string_expression.Jos etsiminen target_expression. Alkaa. Jos tämä väite jätetään pois, ja etsiminen alkaa A: n alusta string_expression.. Esimerkiksi kysely

Valitse nimi aluksilta, joissa Charindex ("SH", nimi)\u003e 0

tuotetaan merkkien "sh" sarjan nimillä. Täällä käytämme sitä, että jos alikuvaus on fodex palauttaa 0. Toiminto Charindex palaa 0. Kyselyn suorittamisen tulos sisältää seuraavat alukset:

nimi.
Kirishima.
Musashi.
Washington.

Huomaa, että jos a target_expression.tai. string_expression. On nolla, toiminnon tulos on myös nolla.

Seuraava esimerkki määrittää merkin "A" sijainnin aluksen "Kalifornian" nimessä

Valitse Charindex ("A", nimi) First_a,
Charindex ("A", nimi, Charindex ("A", nimi) +1) SECOLD_A

Kiinnitä huomiota, että toisen esiintymisen määrittämisessä käynnistysasema, jota käytetään toiminnassa, on merkki ensimmäisen "A" - Charindexin ("A", nimi) +1 vieressä olevan merkin. Tulos - 2 ja 10 - voidaan helposti tarkistaa.

Toiminto. Patindex. Onko seuraava syntaksi:

Patindex ( "% Kuvio%", string_expression)

Tämän toiminnon pää ero Charindexista on se, että hakumerkki voi sisältää merkkijonoja -% ja _. Vaaditaan ja päättyy Charsers "%". Varten, esimerkiksi tämän toiminnon käyttö ensimmäisessä esimerkissä näyttää

Valitse nimi aluksista, joissa patindex ("% sh%", nimi)\u003e 0

Ja siellä on tapa löytää alusten nimet, jotka sisältävät kolme merkkiä, ensimmäinen ja viimeinen, joista on "e":

Valitse aluksista nimi
Jossa patindex ("% e_e%", nimi)\u003e 0

Tämän kyselyn suorittamisen tulos näyttää tältä:

nimi.
Kosto.
Royal Sovereign.

Toiminto. Oikea Joka väittää. Vasemmalle. Palauttaa määritetyn määrän merkkejä merkin ilmaisu:

Oikea (<merkki_expression.>,<integer_expression.>)

Tässä on esimerkiksi tapa määrittää Sher Start ja päättyy samaan kirjaimeen:

Valitse aluksista nimi
Missä vasemmalla (nimi, 1) \u003d oikea (nimi, 1)

Asia, jota meillä on tyhjä tuloksena oleva asetus tarkoittaa, että tällaiset alukset ovat poissa tietokannassamme. Let "s yhdistelmä - luokka ja aluksen nimi.

Kahden merkkijonon arvon yhdistäminen yhteen kutsutaan concattenation.ja SQL Server Sign "+" käytetään tähän toimintaan ("||" Standardissa). NIIN,

Valitse * alkaen (
) X.

Täällä erotamme tilaa ja aluksen nimi. Lisäksi, jotta koko rakennetta ei toisteta toiminnon argumentissa, käytämme alaluokkia. Tulos näyttää tältä:

cN.
Iowa Missouri.
North Carolina Washington.

Ja mitä jos merkkijono ilmaisu sisältää vain yhden merkin? Kysely tuotetaan sen. Voit helposti tarkistaa sen kirjoittamalla

Valitse * alkaen (
Valitse luokka + "" + nimi kuin CN aluksilta
Union kaikki valitsevat "A" NC
) X.
Missä vasemmalla (CN, 1) \u003d Oikea (CN, 1)

Jotta tämä tapaus jätetään pois, yksi hyödyllinen tehtävä Len ( string_expression.) Voidaan käyttää. Se palauttaa merkkijonojen määrä merkkijonossa. Let "s sitovasti, kun merkkien määrä on suurempi kuin yksi:

Valitse * alkaen (
Valitse luokka + "" + nimi kuin CN aluksilta
Union kaikki valitsevat "A" NC
) X.
Kun vasen (CN, 1) \u003d oikea (CN, 1) ja LEN (CN)\u003e 1

Verkkosivustolla on tehtäviä, jotka tarvitsevat normalisoitua (enimmäismäärää jne.) Numeerisessa järjestyksessä arvot, esimerkiksi merkkijonossa, esimerkiksi istuimen numero tasossa ("2D") tai nopeus CD ("24x"). Protemi on tosiasiassa, että teksti lajit kuten tämä (nouseva)

11a.
1a.
2a.

Valitse "1a" paikka
Union kaikki valitse "2a"
Union kaikki valitsevat "11a"
Tilaa 1.

Jos paikkojen lajittelu rivien kasvusta tarvitaan, tilauksen on oltava näin:

1a.
2a.
11a.

Tällaisen tilauksen saamiseksi tarvitaan lajittelua tekstin numeerisilla arvoilla. Tarjoan seuraavan algoritmin:
1. Poista numero merkkijonosta.
2. Muunna se numeeriseen muotoon.
3. Suorita lajittelu muunnetulla arvolla.

Kuten tiedämme, että merkkijono ja lähettämällä numero voimme käyttää seuraavaa rakennetta, joka ei ole riippuvainen useista numeroista istuimen numerossa:

Vasen (paikka, len (paikka) -1)

Jos me vain sidoimme tämän, me "ll saat

paikka.
1a.
11a.
2a.

Numeerisen muotoon muuntaminen voi näyttää seuraavista:

Valettu (vasen (paikka, len (paikka) -1) int)

Nyt meidän pitäisi vain lajittelua

Valitse * alkaen (
Valitse "1a" paikka
Union kaikki valitse "2a"
Union kaikki valitsevat "11a"
) X Tilaa valettu (vasen (paikka, len (paikka) -1) int)

Prof.

Aikaisemmin käytimme vasenta toimintoa, kun otetaan numero merkkijono ilmaisusta, koska tiesimme etusijalle, kuinka monta merkkiä poistetaan oikealta (yksi). Ja mitä jos meidän pitäisi purkaa merkkijono substringista, ei hahmon tunnetulla paikalla, vaan itse hahmolla? Esimerkiksi uutetaan kaikki merkit ennen ensimmäistä kirjainta "X" (CD-nopeuden arvo).

Tällöin voimme myös käyttää aiemmin harkitun Charindex-toimintoa, jonka avulla voimme määrittää merkin tuntemattoman asennon:

Valitse malli, vasen (CD, Charindex (X ", CD) -1) tietokoneesta

Substring Toiminto.

Substring (<ilmaisu> ,<alkaa.>,<pituus.>)

Tämä toiminto antaa meille mahdollisuuden uuttaa ilmaisusta sen osasta määritetystä pituudesta, alkaen tietystä alkuasennosta. Ilmentäminen voi olla merkki tai binaarinen merkkijono ja voi myös olla teksti tai kuvatyyppi. Esimerkiksi jos meidän on saatava 3 merkkiä aluksen nimellä, alkaen 2 nd-merkkiä, niin se ei ole varsin helppo tehdä se WHE kirjoitamme:

Valitse nimi, substring (nimi, 2, 3) aluksista

Jos meidän on poistettava kaikki tietyt, voimme myös käyttää tätä toimintoa. Esimerkiksi,

Valitse Aluksista nimi, substring (nimi, 2, len (nimi))

antaa meille kaikki merkit nimissä nimissä nimissä. Kiinnitä huomiota, jotta määritettäisiin hahmojen määrän, joka poimittiin, LEN (nimi) -toiminto, joka palauttaa nimensä nimellä. Se on selvästi se, että pakollinen, kun tarvitsen Charcers, toisesta, sen määrä on pienempi kuin koko naarasten määrä nimeä. Mutta se ei aiheuta virhettä, koska jos määrätty määrä vastaajia imeytyy Sallittu numero, kaikki merkkijonot, kunnes merkkijonon päättyminen uutetaan. Siksi otan sen katsella varaa säästää itseäni laskelmia.

Käänteinen Toiminto.

Tämä toiminto kääntää merkkijono, aivan kuten lukeminen oikealta vasemmalle. Tämä on seurausta kyselystä

Valitse Käänteinen ("ABCDEF")

b "Fedcba". Jos kyseessä on oikea toiminto kielellä

Valitse oikea ("abcdef", 3)

voidaan myös korvata kyselyllä

Valitse taaksepäin (vasen (taakse ("ABCDEF), 3))

Näen tämän tehtävän voiton seuraavassa. Meidän on määritettävä sijainti ei ole ensimmäinen, vaan merkkijonon (tai merkkijonon) viimeinen esiintyminen merkkijonossa.

Anna "s muistuttaa esimerkkiä, jossa määritämme ensimmäisen merkin" A "sijainnin aluksen" Kalifornian "nimessä:

Valitse Charindex ("A", nimi) First_a
Aluksista, joissa nimi \u003d "Kalifornia"

Nyt anna "S määrittää tämän nimen" A "viimeisen esiintymisen. Toiminto

Charindex ("A", käänteinen (nimi))

antaa meille mahdollisuuden löytää tämän kannan, mutta oikealta. Saadaksesi tämän merkin sijainnin, mutta vasemmalta, se on tarpeeksi kirjoittaa

Valitse Len (nimi) + 1 - Charindex ("A", käänteinen (nimi)) First_a
Aluksista, joissa nimi \u003d "Kalifornia"

Korvata Toiminto.

Vaihda (<string_expression1> , <string_expression2.> , <string_expression3.>)

Tämä toiminto korvaa string_expression1 Kaikki tapahtumat string_expression2. Kanssa string_expression3.. Tämä toiminto on ehdottomasti hyödyllinen Päivittää. Operaattorit, jos me shld muuttaa sarakkeen sisältöä. Esimerkiksi meidän on vaihdettava kaikki väliviivojen väliset tilat aluksilla. Sitten voimme kirjoittaa

Päivitä alukset.
Aseta nimi \u003d Vaihda (nimi, "", "-")

(Tämä esimerkki voi toimia sivulla DML-harjoituksissa, joissa datan päivittämistä koskevat kysymykset hyväksyttiin)

Tämä toiminto voi kuitenkin myös löytää laitteensa ei-triviaaleissa tapauksissa. LET "S määrittää, kuinka monta kertaa kirjainta" a "käytetään aluksen nimessä. Ajatus on melko helppoa: Antakaa jokaisen hakukirjeen, jonka me" ll lasketaan merkkijonojen pituudet ja Lähdekoodi. Niin,

Valitse nimi, Len (korvaa (nimi, "A", "AA")) - Len (nimi) aluksilta

Ja mitä jos meidän on määritettävä satunnaisen merkkien satunnaisen sekvenssin määrä, sanotaan, että saamme parametriksi tallennetun menettelyn? Tällöin meidän on täydennettävä divisioonaa useilla merkkeillä sekvenssissä:

Julistaa @str kuin Varchar (100)
Aseta @ str \u003d "MA"
Valitse nimi, (Len (korvaa (nimi (nimi, @str, @ [Sähköposti suojattu])) - Len (nimi)) / Len (@str) aluksilta

Täällä, jotta voit kaksinkertaistaa hakujen määrä Charcers Concattenation @ [Sähköposti suojattu] Sovellettiin. Tätä varten voimme kuitenkin käyttää yhtä toimintaa - Kopioida. Joka toistaa ensimmäisen argumentin niin monta kertaa kuin toinen väite.

Valitse nimi, (korvaa (nimi (nimi, @str, kopiointi (@str, 2))) - Len (nimi)) / Len (@ST) aluksilta

Näin toistumme kahdesti variaatioon tallennetun alustaan.

Jos meidän on korvattava merkkijono ei ole tietty merkkijono, vaan määritetty määrä merkkejä, alkaen asemasta, se on yksinkertaisempi käyttää Juttu Toiminto:

Tavaraa (<character_expression1> , <alkaa.> , , <character_expression2.>)

Tämä toiminto korvaa substringin, jonka pituus on pituus. Joka alkaa alkaa. Asentoon character_expression1 Kanssa character_expression2..

Esimerkki. Muuta aluksen nimeä: Liitä "_" (alaviiva) ja käynnistysvuosi ensimmäisen 5 merkin jälkeen. Jos tiloissa on alle 5 merkkiä, täydennetään sitä.

Tämä tehtävä voidaan ratkaista monilla eri toiminnoilla. Yritämme tehdä sen Tavaraa. Toiminto.

Ensimmäisessä lähestymistavassa me kirjoitamme (rajoittavat valintakyselyn):

Valitse nimi, tavaraa (nimi, 6, len (nimi), "_" + käynnistetty) aluksilta

Käytän Len (Nimi) kolmannen väitteenä (korvaavien merkkien määrää), koska minun pitäisi korvata kaikki merkit merkkijonon loppuun asti ja että "s ottaen sen varalla - alkuperäisen lakanan alkuperäisen määrän Nimi. Mutta tämä kysely palauttaa edelleen virheen. Ja kysymys ei ole kolmannessa argumentissa, mutta merkkijonovakiossa ja kokonaisluku sarakkeessa suoritetaan. Tämä on tyypin muunnosvirhe. Jotta voit muuntaa numero sen merkkijonon Voimme käyttää yhtä sisäänrakennettua toimintoa - STR.:

STR (<float_expression> [ , <pituus.> [ , <desimaali> ] ])

Tämän muuntamisen alla pyöristetään, ja a pituus. Määrittää tuloksena olevan merkkijonon pituuden. Esimerkiksi,

STR (3.3456, 5, 1) 3.3
STR (3.3456, 5, 2) 3.35
STR (3.3456, 5, 3) 3.346
STR (3.3456, 5, 4) 3.346

Huomaa, että jos sinulla on merkkijonon näkemys numero on vähemmän, johtavat tilat lisätään. Jos tulos on suurempi kuin määrätty pituus, murtoosa katkaistaan \u200b\u200b(pyöreällä); Jos kokonaislukuarvo, saamme vastaavan määrän tähtimerkkejä "*".

STR (12345.4.0) ****

Muuten oletuspituus on 10 symbolia. Pidä mielessä, että vuosi korotetaan neljällä numerolla, kirjoitamme

Valitse nimi, tavaraa (nimi, 6, Len (nimi), "_" + STR (käynnistetty, 4)) aluksista

Kaikki on melkein oikeassa. Tapaus on aloitettava, kun se on alle 6, kuten tässä tapauksessa toiminnon tavaraa antaa nulliksi, nimissä symbolit ovat alle 6, kuten tässä tapauksessa toiminnon tavaraa antaa nolla. No, tulee olemaan telineeseen loppuun, joka on yhteydessä tämän toiminnon käyttämiseen tässä esimerkissä, jolla on yksi merkkijonon toiminto.

Me "ll lisätä perään tyhjät aihiot nimen pituus on tietoisesti enemmän kuin 6. On erityinen Tilaa. Toiminto.

Tilaa (<numero_of_blanks.>):

Valitse nimi, tavaraa (nimi + tila (6), 6, len (nimi), "_" + str (käynnistetty, 4)) aluksista

LTRIM. Ja. Rtrim. Toiminnot

Ltrim (<merkki_expression.>)

Rtrim (<merkki_expression.>)

leikkaa vastaavasti merkkijonon ekspression johtavat ja perääntyvät, joka muunnetaan oletusarvoisesti Varchar. Tyyppi.

Meidän on rakennettava tällainen merkkijono: matkustajan nimi_passengerin tunniste Jokaisesta tietueesta matkustajapöydältä. Jos kirjoitamme.

Valitse nimi + "_" + valettu (ID_PSG kuin Varchar) matkustajalta,

tulemme tulokseen jotain:

Se on yhteydessä siihen, että sarakkeen nimellä on tyyppi Hiiltyä.(kolmekymmentä). Lyhyt merkkijono lisätään tämäntyyppisiin aihioihin tiettyyn ulottuvuuteen (meillä on 30 symbolia). Toiminto RTRIM auttaa meitä täällä:

Valitse RTRIM (nimi) + "_" + valettu (ID_PSG kuin Varchar) matkustajalta

Alempi Ja. Ylä. Toiminnot

Alempi (<merkki_expression.>)

Ylempi (<merkki_expression.>)

muunna kaikki argumentin merkit vastaavasti alempaan ja ylempään rekisteriin. Nämä toiminnot osoittautuvat hyödyllisiksi rekisterinpitävyyteen verrattuna.

Pari mielenkiintoisia toimintoja Soundex. Ja. Ero

Soundex (<merkki_expression.>)

Ero (<rekisteröidy_Exrion_1>, <character_expression_2.>)

anna meille määrittää samankaltaiset sanat. SoungeEx palauttaa neljän merkin koodin samankaltaisuuden arvioimiseksi, mutta ero vain arvioi asianmukaisesti kaksi vertailukerrosta. Koska nämä toiminnot eivät tue kyrillistä, viittaan Bol. Esimerkkejä sen käytöstä.

Lopuksi voimme lisätä joitain toimintoja ja muutamia esimerkkejä Unicode-käytöstä:

Unicode. Toiminto.

Unicode (<ncharacter_expression>)

palauttaa Unicode-arvon tulon ilmaisun ensimmäisen merkin.

Nchar. Toiminto.

Nchar (<kokonaisluku>)

palauttaa merkin, jossa on annettu kokonaisluku Unicode-arvo. Muutamia esimerkkejä:

Valitse ASCII ("A"), Unicode ("A")

Palauttaa ASCII-koodin arvon ja Venäjän kirjeen Unicode-arvon "A": 224 ja 1072.

Valitse Char (ASCII ("A"), Char (Unicode ("A"))

Yritämme palauttaa symbolin koodin arvolla. Saamme "a" ja nolla. Null-arvo palaa, koska 1072-koodin arvo puuttuu tavanomaisessa koodin taulukossa.

Valitse Char (ASCII ("A"), Nchar (Unicode ("A"))

Nyt se on kunnossa, "a" molemmissa tapauksissa.

Valitse Nchar (ASCII ("A"))

antaa "A", koska Unicode-arvo 224 vastaa täsmälleen tätä kirjettä.

»Annettuja esimerkkejä tästä voidaan tehdä suoraan verkkosivustolla valitsemalla valintaruutu" ilman tarkistamista "sivulla, jossa on valitut harjoitukset.