SQLite Karakterlánc függvények: REPLACE, SUBSTR, TRIM, LENGTH

⚡ Okos összefoglaló

SQLite Az olyan karakterláncfüggvények, mint a LENGTH, SUBSTR, REPLACE és TRIM, közvetlenül a lekérdezéseken belül manipulálják a szöveget, míg a numerikus segédfüggvények, mint az ABS és a ROUND, valamint a TYPEOF és a verziósegítők kiterjesztik a SQLite könyvtár végez.

  • 📏 Hossz: A LENGTH függvény megszámolja, hogy egy karakterlánc hány karaktert tartalmaz, és null értéket ad vissza, ha az átadott érték null.
  • 🔠 Kisbetűk átalakítása: Az UPPER és LOWER parancsok nagybetűs vagy kisbetűs karakterláncot írnak be, a számokat és a null értékeket változatlanul hagyva.
  • ✂️ Alkarakterláncok: SUBSTR extracA ts függvény egy kiválasztott pozícióból származó karaktereket cserél ki, míg a REPLACE függvény egy alkarakterlánc minden előfordulását egy másikra cseréli.
  • 🧮 Numerikus segítők: Az ABS függvény előjel nélküli értéket ad vissza, a ROUND pedig a kért számjegyekre rövidíti a decimális számot.
  • 🔍 ellenőrzés: A TYPEOF egy kifejezés adattípusát adja vissza, a LAST_INSERT_ROWID pedig az utolsó beszúrt sor azonosítóját.
  • 🤖 AI segítség: GitHub Copilot és AI szöveg-SQL eszközök állványzata SQLite függvénylekérdezéseket, míg az egyéni C függvények kiterjesztik a beépített könyvtárat.

SQLite Húrfüggvények

Hogyan állítsam be SQLite és karakterláncfüggvény-lekérdezések futtatása

SQLite alapértelmezés szerint fel van szerelve a beépített funkciók listájával SQLite könyvtár. Az alapfunkciók kiterjesztése érdekében a C nyelv használatával további egyéni funkciókat is hozzáadhat.

Vegye figyelembe, hogy a következő példák mindegyikéhez futtatnia kell az sqlite3.exe fájlt, és kapcsolatot kell nyitnia a minta adatbázissal az alábbiak szerint:

Step 1) Ebben a lépésben nyissa meg a Sajátgép ablakot, keresse meg a következő könyvtárat: „C:\sqlite”, majd nyissa meg az „sqlite3.exe” fájlt:

SQLite Húrfüggvények

Step 2) Nyissa meg a „TutorialsSampleDB.db” adatbázist a következő paranccsal:

SQLite Húrfüggvények

Most készen áll a futtatásra kérdés és próbáljon ki minden, a következő szakaszokban használt lekérdezést.

Húr LENGTH megkeresése SQLite

Egy karakterlánc hosszának meghatározásához használja a LENGTH(X) paramétert, ahol X egy karakterlánc értéke. Ha X null érték, akkor a hossz függvény null értéket ad vissza.

A hossz függvényt számértékekkel is használhatja a numerikus érték hosszának kiszámításához.

Példa:

A következő példában megpróbáljuk a LENGTH függvény szintaxisát a következő értékekkel:

SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);

Ez a következőket adja:

Húr LENGTH megkeresése SQLite

Az eredmény a következő:

  • A LENGTH('A string') 8-at ad vissza, ami az „A string” karakterlánc hossza.
  • A LENGTH(NULL) nullát ad vissza.
  • A LENGTH(20) 2-t ad vissza, mert a 20 2 hosszúságú.
  • LENGTH(20.5) 4-et ad vissza; A lebegőpontos "." karakternek számít, tehát négy karaktered lesz – a 3 karakter, amely a számok hossza. Plusz még egy karakter a lebegőpontos „.” számára.

Kis- és nagybetűváltás UPPER és LOWER funkcióval

A UPPER(X) ugyanazt az x karakterláncot adja vissza, de az összes karakterláncot nagybetűvel fogja ábrázolni.

A LOWER(X) ugyanazt az x karakterláncot adja vissza, de az összes karakterláncot kis karakterekkel fogja ábrázolni.

UPPER és LOWER null értékeket ad vissza, ha null értéket ad át nekik.

Ha numerikus értékeket ad át a UPPER vagy LOWER értéknek, mindkettő a pontos számértéket adja vissza.

Példa:

SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);

Ez a következőket adja:

Példa a UPPER és LOWER funkciókra SQLite

Az eredmény a következő:

  • Az UPPER('a string') visszaadja a „karakterlánc” karakterláncot nagybetűs ábrázolásban: „A STRING”.
  • A LOWER('A STRING') függvény visszaadja az „A STRING” karakterláncot kisbetűs „a string” formátumban.
  • UPPER(20), LOWER(20) ugyanazt a számot adja vissza, mivel nincs hatással a számokra.
  • UPPER(NULL), LOWER(NULL) nullát ad vissza, mert null értéket adtunk át nekik.

SQLite SUBSTR funkció

A SUBSTR függvény egy adott pozíciótól kezdődő, adott számú karakterláncot ad vissza. Három operandust adhatsz át a függvénynek, például így: „SUBSTR(X,Y,Z)” az alábbiak szerint:

  • X a karakterlánc literál vagy az elemezni kívánt karakterlánc oszlop. Megadhat literális értéket (statikus értéket) vagy oszlopnevet, és ebben az esetben az érték az oszlop értékeiből kerül kiolvasásra.
  • Y a kiindulópont az ex-heztract a belőle kiinduló húr.
  • Z az elemezni kívánt karakterek száma az adott Y pozíciótól kezdve. Ez a szám nem kötelező, figyelmen kívül hagyhatja, és ebben az esetben SQLite lesz extracAz Y pozíciótól kezdődő karakterlánc megmondja a karakterlánc végét.

Példa:

A következő lekérdezésben a SUBSTR függvényt használjuk, hogy a tanulók nevéből a második karaktertől kezdődő 4 karaktert megkapjuk:

SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2)
FROM Students;

Ez a következőket adja:

Példa a SUBSTR függvényre in SQLite

  • SUBSTR(DiákNév, 2, 4) A „DiákNév” karakterláncot a második karaktertől kezdődően részkarakterláncként kezeli, majd visszaadja a következő 4 karaktert.
  • A SUBSTR(StudentName, 2) függvényben azonban nem adtunk meg számot a visszaadandó karaktereknek, ezért SQLite a „StudentName” összes fennmaradó karakterét adta vissza a második pozíciótól kezdve.

Egy karakterlánc részeinek megváltoztatása -val SQLite REPLACE funkció

A REPLACE egy másik karakterláncon előforduló karakterláncot karakterláncra cserél.

REPLACE(X, Y, Z) – X a bemeneti karakterlánc literálja vagy oszlopa. Y az a karakterlánc, amelyet a Z karakterláncra kell cserélni. Vegye figyelembe, hogy az Y karakterlánc bármely előfordulását lecseréli Z-re, nem csak egyet.

Példa:

A következő lekérdezésben az „xx” karakterlánc összes előfordulását a következő karakterlánccal fogjuk helyettesíteni: „SQLite"

SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');

Ez megadja neked

Példa a REPLACE funkcióra in SQLite

  • A replace függvény az összes „xx” karakterláncot a „SQLite".
  • Tehát a kimenet a következő lesz: „SQLite nagyon könnyű, SQLite könnyű megtanulni”.

Üres helyek levágása a SQLite TRIM funkció

TRIM távolítsa el az üres szóközöket a karakterlánc elejéről vagy végéről. Nem távolít el szóközt a karakterlánc közepéről, csak az elejétől vagy a végétől.

Példa:

A következő lekérdezésben a TRIM függvényt használjuk az üres szóközök eltávolítására a karakterlánc elejéről és végéről.

Vegye figyelembe, hogy a „||” összefűzési operátor egy extra „;” hozzáadására szolgál a húr végére. Hogy megmutassa, hogy az üres helyeket eltávolították a fekete ablakban.

SELECT TRIM('      SQLite is easy to learn        ') || ';';

Ez a következőket adja:

Példa a TRIM funkcióra SQLite

Figyelje meg, hogyan távolították el az üres szóközöket a karakterlánc elejéről és végéről, helyükre ' ; ' a végén.

Az abszolút értékek olvasása SQLite ABS funkció

Az ABS függvény egy numerikus érték abszolút értékét adja vissza. Az abszolút érték a pozitív vagy negatív előjel nélküli numerikus érték. Az ABS(X) az X értékétől függő értéket ad vissza a következőképpen:

  • X abszolút értéke, ha X numerikus érték.
  • NULL érték, ha X null érték.
  • „0.0” érték, ha X egy karakterlánc.

Példa:

A következő lekérdezésben megpróbáljuk lekérni egy karakterlánc, egy szám és egy null érték abszolút értékét az ABS függvény segítségével:

SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);

Ez a következőket adja:

Példa az ABS funkcióra SQLite

Az eredmények a következők:

  • Az ABS(-2), ABS(+2) 2-t ad vissza, mivel a 2 a „-2” és a „+2” abszolút értéke.
  • Az ABS('a string') „0.0”-t ad vissza, mert karakterláncértéket adott át, nem numerikus értéket.
  • Az ABS(null) nullát ad vissza, mert null értéket adott át neki.

Értékek kerekítése a ROUND funkcióval SQLite

A tizedes számok „lebegőpontos” számok. rajta például „20.5”, „8.65”. A lebegőponttól balra lévő részt egész résznek, a lebegőponttól jobbra eső részt tizedes résznek nevezzük.

Az egész számok azok a számok, amelyeken nincs lebegőpont. Például „20”, „8”.

A ROUND(X) a decimális értékeket vagy az X oszlopokat csak egész számokká alakítja. A tizedesvesszőtől balra lévő egész szám visszaadásra kerül, és a tizedesvesszőtől jobbra lévő összes számjegy törlődik.

Példa:

A következő lekérdezésben a ROUND függvényt próbáljuk ki különböző opciókkal:

SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');

Ez a következőket adja:

Példa a ROUND funkcióra SQLite

Az eredmény a következő:

  • ROUND(12.4354354) – „12” értéket ad vissza, mert nem adtad meg a számjegyek számát. Így, SQLite eltávolította az összes tizedes részt.
  • ROUND(12.4354354, 2) – „12.44” értéket ad vissza, mert csak 2 számjegyet adott meg a kerekítéshez, amely a tizedesvesszőtől jobbra lévő két számjegy.
  • ROUND(NULL) – nullát ad vissza, mert null értéket adott át neki.
  • ROUND('a string') – „0.0” értéket ad vissza, mert karakterláncértéket adott át neki.

A kifejezés adattípusának megkeresése a TYPEOF függvénnyel

Ha egy oszlop vagy literális érték típusát szeretné megtudni, akkor ehhez a TYPEOF függvényt használhatja.

A TYPEOF(X) függvény a nevéből adódóan az X kifejezés adattípusát adja vissza. Egy karakterlánc értéket ad vissza, amely jelzi az X adattípusát. Az adattípusok alapján adja vissza az értéket, függetlenül attól, hogy „NULL” értékről van-e szó, valós, szöveg, egész, … stb.

Példa:

A következő lekérdezésben megpróbáljuk a TYPEOF függvényt különböző típusú literálértékekkel:

SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');

Ez a következőket adja:

Példa a TYPEOF függvényre SQLite

A visszaküldött eredmények a következők:

  • TYPEOF(null) – nullát ad vissza, mert null értéket adott át neki.
  • TYPEOF(12) – egész számot ad vissza, mivel a 12 egy egész szám.
  • TYPEOF(12.5) – REAL értéket ad vissza, mivel a 12.5 valós szám.
  • TYPEOF('a string') – szöveget ad vissza, mivel a „karakterlánc” egy szöveg.

Az utoljára beillesztett rekord megkeresése a következővel: SQLite LAST_INSERT_ROWID

SQLite egy egész kulcsot (Id) rendel az összes tábla összes sorához. Ez a szám a sorok egyedi azonosítására szolgál.

Amikor egy új sort BESZÉRSZ egy táblázatba, SQLite egyedi értéket rendel a rowidhoz.

Ha a táblának csak egy oszlopban van deklarált elsődleges kulcsa, és az oszlop INTEGER adattípusú, akkor ez az oszlopérték lesz sorazonosító.

A LAST_INSERT_ROWID() függvény az adatbázis bármely táblájában az utolsó beszúrt sor ROW_ID-jét adja vissza. Vegye figyelembe, hogy ehhez nem kell operandus.

Példa:

A következő példában a LAST_INSERT_ROWID() függvényt a következőképpen futtatjuk:

SELECT LAST_INSERT_ROWID();

Ez a következőket adja:

Példa a LAST_INSERT_ROWID függvényre SQLite

A LAST_INSERT_ROWID() 0-t ad vissza, mert az aktuális adatbázis-kapcsolatban nincsenek sorok beszúrva egyetlen táblába sem.

Most szúrjunk be egy új tanulót, és futtassuk újra a LAST_INSERT_ROWID() függvényt az insert utasítás után, így:

INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12');
SELECT LAST_INSERT_ROWID();

Ez a következőket adja:

Példa a LAST_INSERT_ROWID függvényre SQLite

Miután beszúrtunk egy új tanulót 11-es azonosítóval, a LAST_INSERT_ROWID() az utoljára beillesztett sorazonosítót adja vissza, amely 11.

Az Ön verziójának beszerzése SQLite könyvtár

A saját verziójának beszerzéséhez SQLite könyvtárat, meg kell hívnia az SQLITE_VERSION() függvényt.

Példa:

Nézzük meg, mi a verziója a SQLite a következő parancs futtatásával használjuk:

SELECT SQLITE_VERSION();

Ez a következőket adja:

Példa a verziószám lekérésére SQLite könyvtár

Az SQLITE_VERSION() a 3.9.2-t adja vissza, amely a SQLite használunk.

Felhasználó által definiált függvények létrehozása és a felhasználó által definiált függvények összesítése

Egyes felhasználók számára a SQLite az alapvető funkciók korlátozottak. Előfordulhat, hogy egyéni szükségleteikhez egyéni funkciókat kell hozzáadniuk.

SQLite nem támogatja a felhasználó által definiált függvények létrehozását. Más adatbázis-kezelő rendszerekkel ellentétben nem hozhat létre felhasználó által definiált függvényeket SQLite közvetlenül.

Azonban létrehozhatsz függvényeket programozási nyelvekkel, például C#, C, PHP vagy C++ és a maghoz csatolta azt a funkciót SQLite funkciók a SQLite maga a könyvtár az „sqlite3_create_function” függvénnyel. Ezután újra felhasználhatja őket az adatbázisában.

Példa:

A következő példában létrehozunk egy felhasználó által definiált függvényt C# programozási nyelven, és hozzáadjuk a SQLite funkciók:

[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)]
public class DoubleValue: SQLiteFunction
{
    public override object Invoke(object[] args)
    {
        return args[0] * 2;
    }
}

Ez a kódrészlet a C# programozási nyelv; egy C# függvényt hoz létre a C# kód segítségével.

A függvény neve a következő leszDoubleA „Value” kifejezés egy paramétert vesz fel, és annak kettővel szorzott értékét adja vissza.

Vegye figyelembe, hogy a C# automatikusan hozzáadja ezt a függvényt SQLite. Csak le kell fordítania és futtatnia ezt a kódot. Ezután a C# hozzáadja az azonos nevű függvényt a listához SQLite funkciókat. Ezután használhatja ezt a funkciót SQLite.

Ugyanúgy, mint olyan programozási nyelvek használatával, mint a C#, C, PHP vagy C++, a felhasználó által definiált összesített függvényeket is létrehozhatja. Amelyek az összesített függvények kiterjesztésére szolgálnak SQLite és használja őket egyéni összesítő függvények létrehozására.

GYIK

A skaláris függvények, mint például a LENGTH, UPPER és ROUND, soronként egyszer futnak, és egy értéket adnak vissza. Az összesítő függvények, mint például a COUNT, SUM és GROUP_CONCAT, sok sort dolgoznak fel együtt, és egyetlen kombinált eredményt adnak vissza az egész csoportra vonatkozóan.

SQLite operátorral köti össze a karakterláncokat, például 'a' || 'b'. Az újabb verziók a concat() és concat_ws() skaláris függvényeket is hozzáadják, míg a group_concat() több sorból származó értékeket egyesít egyetlen elválasztott karakterlánccá.

Igen. SQLite DATE, TIME, DATETIME, JULIANDAY és STRFTIME értékeket biztosít. Ezek a függvények szövegből, Unix időbélyegekből vagy a 'now' speciális értékből formázzák és számítják ki a dátumokat, mivel SQLite a dátumokat TEXT, REAL vagy INTEGER formátumban tárolja, nem pedig egy dedikált típust.

Alapértelmezés szerint a NAGYBETŰS és ALSÓ BETŰS csak az ASCII betűket A-tól Z-ig változtatja, így az ékezetes vagy nem latin karakterek változatlanok maradnak. A teljes Unicode kis- és nagybetűs konverzióhoz az ICU kiterjesztésnek le kell fordulnia a következőre: SQLite, amelyet kevés alapértelmezett build tartalmaz.

Használd az INSTR(X, Y) függvényt, amely az Y alkarakterlánc első pozícióját adja vissza az X karakterláncon belül, 1-től számolva. 0-t ad vissza, ha az alkarakterlánc hiányzik. Párosítsd az INSTR-t a SUBSTR-rel a következőhöz:tract szöveg egyező karakter után.

A kifejezést az IFNULL(X, fallback) vagy a COALESCE(X, fallback) függvények közé kell csomagolni, hogy egy alapértelmezett értéket helyettesítsen be, amikor a függvény null értéket ad vissza. A COALESCE több argumentumot is elfogad, és az első nem null értéket adja vissza, ami akkor hasznos, ha sok oszlop üres lehet.

Igen. GitHub másodpilóta LENGTH, SUBSTR, REPLACE és ROUND hívásokat javasol megjegyzésből vagy táblanévből, és felhasználó által definiált függvénykódot készít C vagy C# nyelven. Mindig tesztelje a kimenetét a sémával szemben, mert képes oszlopneveket kitalálni.

Igen. A mesterséges intelligenciával működő szöveg-SQL asszisztensek egyszerű nyelvű kéréseket alakítanak át SQLite olyan lekérdezések, amelyek karakterlánc-függvényeket, például TRIM-et és REPLACE-t használnak. Felgyorsítják a prototípustping, mégis ellenőrizni kell a generált SQL-t az adataiddal szemben, mivel a gépi tanulási modellek néha pontatlan logikát produkálnak.

Foglald össze ezt a bejegyzést a következőképpen: