SQLShack (Suomi)

posted in: Articles | 0

tässä artikkelissa me tarkistaa SQL varchar tietotyyppi mukaan lukien perus määritelmä ja kuvaus, erot varchar(n), UTF-8-tuki -, Lajittelu -, suorituskyky näkökohdat ja enemmän.

Data on ratkaisevassa osassa missä tahansa organisaatiossa ja ominaisuutta, jonka mukaan se on määritelty, kutsutaan sen tietotyypiksi. Yksinkertaisilla sanoilla tietotyyppi kertoo, millaista dataa mikä tahansa objekti, muuttuja tai lauseke voi tallentaa., SQL-kehittäjänä meidän on SQL-taulukkoa luodessamme ymmärrettävä ja päätettävä, minkä tyyppinen tieto sisältyy jokaiseen taulukon sarakkeeseen. Kuten mikä tahansa muu ohjelmointikieli, SQL tukee myös kirjo tietotyypit, johon mahtuu kokonaisluku tiedot, päivämäärä ja aika, tiedot, merkki, tiedot jne. ja voit määritellä myös omia tietotyyppejä. SQL varchar on yksi erän tunnetuimmista ja käytetyimmistä tietotyypeistä. Tässä artikkelissa, me kävellä läpi eri puolia SQL Server varchar SQL server.

alla on ääriviivat, jotka käsittelemme tässä lohkossa.,

  1. Johdatus SQL Server varchar tietotyyppi SQL-Palvelin
  2. Käyttö varchar suurten korttelin tekstiä
  3. Mikä on uusi SQL Server 2019 esikatselu varchar tietotyyppi?,
  4. Vaikutus lajittelu on varchar SQL SQL Server
  5. UTF-8-tuki varchar SQL Server 2019 CTP
  6. SQL Server varchar tietojen muunnoksia ja tietojen näyttö
  7. Tallennustilaa ja suorituskykyä näkökohdat käyttämällä SQL Server varchar
  8. Vaikutus merkkijonon pituus SQL varchar kanssa VALETTU ja MUUNTAA toimintoja

Mennään eteenpäin ja nähdä, edellä mainittu toiminta.

joten mitä varchar on SQL: ssä?

kuten nimestä voi päätellä, varchar tarkoittaa merkkitietoja, jotka vaihtelevat., Tunnetaan myös nimellä muuttuva merkki, se on määrittelemätön pituus merkkijono tietotyyppi. Siihen mahtuu numeroita, kirjaimia ja erikoismerkkejä. Microsoft SQL Server 2008 (ja edellä) voi tallentaa jopa 8000 merkkiä merkkijonon enimmäispituudeksi varchar-tietotyypin avulla. SQL varchar yleensä mahtuu 1 tavu per merkki ja 2 enemmän tavua pituus tiedot. On suositeltavaa käyttää varcharia tietotyyppinä, kun sarakkeiden pituus on vaihteleva ja todellinen data on huomattavasti pienempi kuin annettu kapasiteetti. Siirrytään SSMS: ään ja katsotaan, miten varchar toimii.,

seuraava esimerkki luo kolme muuttujaa (nimi, sukupuoli ja ikä) varchar kuin tiedot tyyppi ja eri arvoja on osoitettu heille. Kuten ilmi johtaa sarjaa alla, oletusarvoisesti merkkijonon pituus SQL varchar sarakkeita on 1 ja se palauttaa vain ensimmäisen arvon muuttujien(muun merkkijono on katkennut), kun merkkijonon pituus on kulunut varchar tietotyyppi. Funktiota len () käytetään määritettäessä varchar-sarakkeeseen tallennettujen merkkien määrää.

Miten SQL varchar(max) eroaa varchar(n)?,

On aikoja, jossa SQL-kehittäjät (itseni mukaan lukien) yleensä määritellä tietotyyppi varchar ilman lämpötila, ja sen jälkeen, eivät aseta merkkijono kirjaa SQL pöytä, tämä on, koska SQL-Palvelin jakaa 1 merkki tilaa kuin oletusarvo varchar sarake, joka on määritetty ilman pituus. Käytännön skenaarioita, varchar(n) käytetään tallentaa muuttujan pituus arvo merkkijonona, täällä ” n ” tarkoittaa merkkijonon pituus tavuina ja se voi mennä jopa 8000 merkkiä., Nyt, jatketaan edelleen ja nähdä, miten voimme tallentaa SQL varchar tiedot merkkijonon pituus sarakkeeseen SQL taulukko. Alla script luo taulukon Demovarchar joitakin tietoja siinä. Ja Tulosruudussa näkyy 7 työntekijän tiedot niiden osastojen, iän jne. perusteella.

Oletetaan, siellä on uusi lisäksi työntekijä organisaatiossa ja me, kuten SQL kehittäjät, olisi lisätä tämä uusi tietue edellä olevassa taulukossa käyttäen INSERT-SQL. Alla on yksi tällainen esimerkki.,

1
INSERT INTO Demovarchar VALUES(’Newton Hamilton’, ’Isaac’,’M’,’Design Head’,69)

Oops, SQL Server encountered an error and terminated the statement saying string or binary data would be truncated., Tämä on tapahtunut, koska, sarake LastName varchar(10) voi olla enintään 10 merkkiä ja täällä me yritetään lisätä uusi ennätys narulla pituus(’Newton Hamilton’), joka on selvästi suurempi kuin 10 merkkiä. Pikaratkaisuna voimme muuttaa taulukkoa ja lisätä SQL varchar-sarakkeen tietotyyppiä vaikkapa varchariin (50) uuden rivin lisäämiseksi. Suorita alla oleva skripti muuttaa ja lisää uusi ennätys taulukkoon., Lisäksi voit käyttää LEN() ja DATALENGTH() toiminnot määrittää merkkien määrä ja varastointi koko tavuina vastaavasti, jotka on tallennettu varchar sarakkeessa.

havaitsimme edellä, kuinka voimme asettaa tai muuttaa merkkijonon pituus SQL varchar sarakkeen vastaamaan liiketoiminnan tarpeita. Harkitse kuitenkin skenaariota, jossa olemme epävarmoja datakoosta, joka ladataan SQL-taulukoihimme, tällaisissa olosuhteissa, tietojen tyypin koon tarkastaminen ja muuttaminen kunkin sarakkeen osalta ei ole toteuttamiskelpoinen valinta., Yksi vaihtoehdoista käsitellä tämä voisi olla on asettaa merkkijonon pituus on suurempi baari SQL Server varchar sarake (jos sinulla on karkea arvio siitä, mitä merkkijonon pituus sarake olisi noin).

tärkeä mielessä pidettävä vastike, voimme käyttää merkkijono, pituus enintään varchar(8000) vain koska tämä on suurin määrä merkkejä, että SQL varchar(n) tietotyyppi voi pitää. Joten tapauksissa, joissa on mahdollisuuksia, että merkkijonon pituus varchar sarake voi ylittää 8000 tavua, käyttämällä varchar(8001) tai mitään korkeampi johtaa virheeseen., One short example demonstrating this fact is shown below.

1
2

DECLARE @name AS varchar(8001) = ’john parker d”souza’;
SELECT @name Name

SQL Server 2005 got around this limitation of 8KB storage size and provided a workaround with varchar(max)., Se on ei-Unicode suuri muuttuja-pituus merkin tiedot tyyppi ja voi tallentaa enintään 2^31-1 tavua (2 GT) ei-Unicode-merkkejä.

– Kun tulin ensimmäisen kerran käyttöön käsitteet varchar(n) ja SQL varchar, yhteisen kysymykseen, kuten mikä tahansa muu aloittelija minulla oli, oli miksi emme voi yksinkertaisesti julistaa sarakkeen tietotyyppi varchar(8500) tai korkeampi, koska meillä on varchar(max), joka huolehtii tallennustilaa jopa 2 gt, ja miksi meidän pitäisi joko käyttää varchar(<=8000) tai varchar(max)?, Sain vastaukseni pienellä tutkimuksella, että SQL Server käyttää sivua tietojen tallentamiseen ja jokaisen sivun koko on 8KB(pois lukien sivun otsake, rivin offsets koko). Jos tallennettava tieto on enintään 8000 tavua, varchar(n) tai varchar(max) tallentaa sen riviin. Jos tiedot kuitenkin ylittävät 8000 tavun koon, niitä käsitellään suurena kappaleena (LOB) eikä niitä tallenneta riviin vaan erillisiin LOB-sivuihin(LOB_DATA)., Rivi tällaisessa tapauksessa on vain osoitin lob tiedot-sivulle, jossa varsinainen data on läsnä ja SQL-Palvelin määrittää automaattisesti yli-virtauksen ilmaisin sivun avulla voit käsitellä tietoja riveihin. Pähkinänkuoressa, jos tiedät, että tiedot saattavat ylittää 8000 tavua, on parempi vaihtoehto käyttää varcharia(max) tietotyyppinä.

– Voimme viitata DMV sys.dm_db_index_physical_stats nähdä millainen sivu jako (IN_ROW_DATA data/LOB_DATA/ ROW_OVERFLOW_DATA) on suoritettu., Voit myös tarkistaa tätä linkkiä, jos haluat yksityiskohtainen selvitys siitä, miten SQL Server harjoituksia rivin ja sivun rajoja sekä varchar(n) ja varchar(max) tietotyypit.

hypätään nopeasti SSMS: ään ja katsotaan, miten varcharia(max) voidaan käyttää. Suorita seuraava skripti lisätäksesi 1 tietueen, jossa Stringcolin sarakkeen arvo kussakin rivissä on 15 000 B merkkiä (eli 15 000 tavua).

Yksi rajoitus käyttämällä varchar(max) on emme voi luoda indeksi, joka on varchar(max) keskeisenä sarakkeessa, sen sijaan, se on suositeltavaa tehdä teksti-indeksi, että pylväs.,

nopeasti huomata tee – täältä on viimeinen jalka tämän artikkelin, me mainita varchar tilalle varchar(n). Älä pidä sitä varcharina, jonka oletusarvo on = 1.

oppia joitakin enemmän mielenkiintoisia eroja varchar(n) ja varchar(max) SQL Server, harkita menossa läpi tämän artikkelin, Vertaamalla VARCHAR(max) vs VARCHAR(n) tietotyypit SQL Server.

UTF-8-tuki SQL Server-2019 CTP

Ennen kuin me kaivaa mitä SQL Server-2019 esikatselu ominaisuus on tarjota SQL varchar, katsotaanpa nopeasti tarkastella, yksi enemmän mielenkiintoisia tietoja tyyppi – ’nvarchar’ ensin., Kuten SQL Server varchar , meillä on SQL nvarchar , etuliite n nvarchar tarkoittaa, Unicode, eli se tallentaa sekä Unicode ja ei-Unicode-tietoja. Keskeinen ero varchar ja nvarchar on tapa, jolla ne on tallennettu, varchar tallennetaan säännöllisesti 8-bittinen data(1 tavu per merkki) ja nvarchar tallentaa tiedot 2 tavua merkkiä kohden. Tästä syystä nvarchar voi pitää jopa 4000 merkkiä ja se vie kaksinkertainen tilaa SQL varchar. Voit mennä tämän linkin kautta oppia lisää nvarchar SQL Server.,

julkisen esikatselu SQL Server-2019, Microsoft on ilmoittanut, että tuki UTF-8 merkistökoodaus olemassa olevia tietotyyppejä (varchar ja char). Niille, jotka eivät ole tietoisia UTF-8, se tarkoittaa Unicode Transformation Format, ja se on Unicode-pohjainen koodaus, joka tukee useita kieliä. UTF-8: n 8 tarkoittaa, että se käyttää 1 tavua (8-bittiä) hahmon esittämiseen muistissa. Samoin UTF-16 käyttää 16 bittiä (2 tavua) merkin esittämiseen. Rajoitamme tämän uuden SQL Server 2019 CTP lisälaite ”SQL varchar” vain tässä artikkelissa.,

Tämä lisälaite on seuraavat vaikutukset SQL Server: on

  1. Parantaa Tietojen yhteensopivuus

    Ennen kuin SQL Server-2019 CTP, SQL varchar tietotyyppi oli kyky tallentaa vain Ei-Unicode-tietoja ja tämä esikatselu, voimme nyt luoda varchar sarake tallentaa Unicode-tietojen nojalla UTF-8 käytössä vertailu (_UTF8). UTF-8 on sallittu varchar tietotyypit ja on käytössä, kun luot tai muuttaa objektin lajittelu-asetukseksi merkistö UTF8 pääte. Tämä auttaa minimoimaan merkin muuntaminen kysymyksiä.,

  2. Vähentää tallennustilan ja suorituskyvyn parannuksia

    UTF-8-tuki varchar tietotyyppi tarjoaa huomattavia varastointi säästöjä riippuen merkistöä. Esim, käyttämällä UTF-8 käytössä lajittelu, muuttaa sarakkeen tiedot tyyppi nvarchar(20) varchar(20) tarjoaa merkittävää laskua varastointi turvallisuusvaatimukset koska nvarchar(20) vaatii 40 tavua varastointi-ja varchar(20) on 20 tavua saman Unicode-merkkijono.

Tärkeä side huom – Koska tämä lisälaite on vielä esikatselu, voimme odottaa enemmän progressions tällä alalla lähitulevaisuudessa., Kuitenkin, olemassa olevia Unicode (UTF-16) tietotyypit (nchar, nvarchar ja ntext) pysyvät ennallaan SQL Server 2019 esikatselu.

Lajittelu SQL varchar SQL Server 2019 CTP

Lajittelu SQL Server määrittelee kokoonpanoissa määrittää erilaisia sääntöjä, kuten tapauksessa herkkyys, aksentti herkkyys -, lajittelu -, hahmo tyypit ja leveys jne. Kaikkien näiden ominaisuuksien ymmärtäminen ja miten ne toimivat tietojesi kanssa, tulee erittäin tärkeäksi. Kollaatio voidaan asettaa palvelimen, tietokannan, ilmaisun tai sarakkeen tasolle., UTF-8-tukee tietokanta-tason tai sarake-tason lajittelu SQL Server 2019 CTP ja on käytössä, kun luot tai muuttaa Tietokannan tai sarakkeen lajittelu-asetukseksi lajittelu kanssa UTF8 pääte.

Jos olet suorittaa alle kyselyn vastaan SQL Server-2019 CTP, voit nähdä kaikki UTF-8 tuki vertailu oman SQL Server-esiintymän käyttämällä toiminto (fn_helpcollations()).,d=”284f85b8b5″>

1
2
3

SELECT Name, Description
FROM fn_helpcollations()
WHERE Name like ’%UTF8’;

With SQL Server 2019 preview version, we can assign Unicode collations (UTF-8 supported) as well for SQL varchar columns using the COLLATE clause while declaring the varchar column., Näin erityistä kollointia sovelletaan kyseisen sarakkeen tietoihin vaikuttamatta muuhun tietokantaan.

Koska olemme tekemisissä SQL Server varchar tietotyyppi tässä postitse, katsotaan, miten Sarakkeen Lajittelu SQL-tietotyyppi varchar toimii. Suorita koodi alla muuttaa SQL Server varchar sarake Collation yhdestä kollaatio tyyppi _UTF8 suffix. Voit lukea lisää Tietokantakoosteesta täältä.,TE-TAULUKKO demovarcharcollate

(ID int PRIMARY KEY,
Kuvaus varchar(50) KOKOAA LATIN1_GENERAL_100_CI_AS_SC OLE NULL
);
ALTER TABLE demovarcharcollate
MUUTTAA SARAKKEEN Kuvaus varchar(50) KOKOAA LATIN1_GENERAL_100_CI_AS_SC_UTF8 OLE NULL;

Rooli SQL varchar tietojen muunnoksia ja tietojen näyttö

SQL Server-varchar on laajalti käytetty näyttämällä tiedot toivottavaa muotoja käyttämällä Muuntaa ja Valettu toimintoja SQL Server., Real data käsittelee datatyyppien yhdistelmää ja sen on oltava yhteensopiva keskenään (eli kuuluttava samaan tietotyyppiin), ennen kuin teemme niihin vertailuja. SQL Server tukee sekä implisiittisiä että eksplisiittisiä muunnoksia.

  • Huom: Tarkista SQL VALETTU ja SQL MUUNTAA toiminnon yleiskatsaus saada enemmän tietoa siitä, miten voimme tehdä näitä konversioita tietojen yhteensopivuus.

Kanssa lakkaamaton tarvitsevat muotoilua ja näyttää tiedot vaaditaan lähtö, SQL varchar tulee todella kätevä., Koska SQL kehittäjä itse, mielestäni on erittäin suoraviivaista käyttää convert / cast varchar tietotyyppi tehdä toimeksiantoja tai muutoksia tietoja, erityisesti päivämäärä kentät.

käytän näytteestä DB AdventureWorksDW2017 otettuja Taulukkomuototunnisteita osoittaakseni, miten tämä ominaisuus toimii. Voit viitata mihin tahansa taulukkoon, jossa on joitakin datetime-ja money/float-kenttiä käytännön tarkoitusta varten. Seuraava skripti muuntaa kaksi datetime-sarakkeet SQL varchar tyypit tyyli 102 ja 107 näyttää tietoja muodossa vvvv.mm.dd ja Ma pp, vvvv vastaavasti., Myös SalesAmount-sarakkeen kanssa Rahaa tiedot tyyppi muunnetaan varchar ja tyyli 3 on sovellettu näyttö määrä pilkuilla kuten näkyy kuvakaappaus alla. Lisäksi, sanoa, että me haluaisimme nähdä tiedot tilaukset vuonna 2010 vain, käyttäen CAST-toiminto muuntaa datetime-sarakkeen varchar tiedot, string vertailu suoritetaan JOS lausekkeen. Voit myös mennä yli SQL muuntaa päivämäärä löytää lisätietoja päivämäärä muuntaminen formaatteja ja tyylejä.,

Vaikutus merkkijonon pituus SQL varchar kanssa VALETTU ja MUUNTAA toiminnot

SQL-Palvelin tallentaa pitkä merkkijono tiedot yleisesti käytetty varchar-tietotyyppi ja se on hyödyllistä tietää, odotettu ja suurin merkkijonojen pituudet, näyttää tulokset UI. Kopioi ja suorittaa alla koodi, missä olemme kulkee pitkä merkkijono määrittelemätön pituus varchar muuttuja (@demovarchar) ja myös toinen muuttuja, jossa on määritelty varchar pituus (@demovarcharwithcast)., Microsoft kestää 30 oletukseksi pituus SQL Varchar (määrittelemätön varchar pituus) SQL Server, kun sitä käytetään yhdessä VALETTU ja MUUNTAA toimintoja. Meidän tapauksessa, vaikka merkkijonon pituus oli 52, se palasi 30 pituus kuten kuvassa viimeinen tulos tuotos.

yksi tärkeä kohta tässä on huomata, että kun määrittelemätön pituus varchar kenttä luodaan, oletuspituus tällaisen kentän on 1 (näkyy punaisella värillä alla)., Kun varchar pituus on määrittelemätön ja on käytetty VALETTU tai MUUNTAA toimintoja, VALETTU tai MUUNTAA palautukset n=30 oletusarvoisesti merkkijonon pituus muuntaminen (merkitty sinisellä alla).,le’) NIIN ’LenOFStringPassed’

VALITSE DATALENGTH(@demovarchar) KUIN ’DefaultVarcharLength’
VALITSE DATALENGtH(CAST(@demovarcharwithcast KUTEN varchar(60))) AS ’VarcharLengthSpecifiedWithCast’
VALITSE DATALENGTH(CAST(@demovarcharwithcast KUTEN varchar)) KUTEN ’DefaultVarcharLengthWithCast’

Varastointi ja suorituskyky näkökohdat käyttäen SQL varchar

tietotyypit, kuten varchar, char ja nvarchar ovat kaikki käytetään tallentaa string tiedot SQL Server., SQL varchar tallentaa muuttuvan merkkijonon pituuden, kun taas SQL char tallentaa kiinteän merkkijonon pituuden. Tämä tarkoittaa, että SQL Server varchar omistaa vain sille antamamme merkit ja char pitää suurimman sarakkeen tilan riippumatta merkkijonosta, joka sillä on.

Koska kiinteiden kenttien pituudet, tiedot vedetään suoraan sarake ilman mitään tietojen manipulointi ja indeksi hakuja vastaan varchar ovat hitaampia kuin char kentät. CHAR on parempi kuin VARCHAR suorituskyky viisas, mutta se vie tarpeetonta muistitilaa, kun data ei ole kiinteä pituus., Joten tapauksissa, joissa levyn koko ei ole ongelma, on suositeltavaa käyttää CHAR.

yksinkertaisia sanoja, sanoa, meillä on sarake, jossa varchar(150) = ’SQLShack’ – Tämä vie 8 tavua(sqlshack) + 2 tavua pituus tiedot = 10 tavua todellinen ja sarake char(150) = ’SQLShack’ – Tämä kuluttaa koko 150 tavua levylle, riippumatta siitä, mitä ohitamme merkkijono. Alla oleva esimerkki osoittaa, miten CHAR käyttää suurinta varattu tila (150) sopimaan merkkijono kulunut ja miten varchar sarake käyttää vain tarvittava tila.,

Bottom line on käyttää tietojen tyyppi, joka sopii meidän tarvitsee. Voit käyttää SQL varchar kun koot sarake vaihtelevat huomattavasti, käyttää varchar(max), jolloin on mahdollista, että merkkijonon pituus voi olla enintään 8000 tavua, käytä char, kun koko sarake on kiinteä ja käyttää nvarchar jos on vaatimus tallentaa tai monikielisiä Unicode-tietoja.

päätelmä

tietotyypeillä on keskeinen rooli tietokantojen suunnittelussa, mutta ne jäävät usein huomiotta., Tietotyyppien hyvä ymmärtäminen ja tarkka käyttö varmistavat, että tietojen oikeanlainen luonne ja pituus on merkitty taulukoihin. Tarkoitus tämä vinkki on auttaa sinua ymmärtämään perus ominaisuudet ja ominaisuudet SQL Server varchar yhdessä sen suorituskykyä ja varastointi näkökohtia SQL Server. Käsittelimme myös SQL varcharin viimeaikaisia edistysaskeleita SQL Server 2019 Preview-esikatselussa.

Katso myös

Voit tarkistaa nämä muut artikkelit jatkaa oppimista SQL-tietotyypit.,

  • Ymmärrystä GUID-tunnus tietotyyppi SQL-Palvelin
  • Spatial tietotyypit SQL-Palvelin
  • Tekijä
  • Viimeisimmät Viestit
Gauri on SQL Server Ammattilainen ja on 6+ vuotta kokemusta työskentelystä globaali monikansallinen konsultointi-ja teknologia-organisaatiot. Hän on erittäin intohimoisesti työskennellyt SQL Server aiheita, kuten Azure SQL Database, SQL Server raportointi palvelut, R, Python, Power BI, tietokantamoottori, jne., Hänellä on vuosien kokemus teknisestä dokumentoinnista ja hän on ihastunut teknologian kirjoittamiseen.
hänellä on syvä kokemus data-ja analytiikkaratkaisujen suunnittelusta ja sen vakauden, luotettavuuden ja suorituskyvyn varmistamisesta. Hän on myös sertifioitu SQL Server ja on kulunut sertifioinnit, kuten 70-463: Täytäntöönpano tietovarastot Microsoft SQL Server.,
Näytä kaikki viestit Gauri Mahajan

Uusimmat viestit Gauri Mahajan (katso kaikki)
  • Tutustu Azure Analysis Services-Malli ja Data – 4. helmikuuta 2021
  • aloittanut Azure Analysis Services – tammikuu 13, 2021
  • Liitä Azure Databricks tiedot Power BI Desktop – 1. kesäkuuta 2020 mennessä

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *