SQLite Funzioni stringa: REPLACE, SUBSTR, TRIM, ROUND
SQLite è dotato per impostazione predefinita di un elenco di funzioni integrate all'interno del file SQLite biblioteca. Puoi anche aggiungere altre funzioni personalizzate utilizzando il linguaggio C per estendere le funzioni principali.
Si noti che, per tutti gli esempi seguenti, è necessario eseguire sqlite3.exe e aprire una connessione al database di esempio come segue:
Passo 1) In questa fase,
- Aprire Risorse del computer e andare alla seguente directory “C:\sqlite" e poi
- aprire "sqlite3.exe"
Passo 2) Apri la banca dati”TutorialSampleDB.db" con il seguente comando:
Ora sei pronto per eseguirne uno qualsiasi domanda e prova a effettuare una qualsiasi delle query utilizzate nelle sezioni seguenti.
Trovare la LUNGHEZZA di una stringa in SQLite
Per trovare la lunghezza di una stringa utilizzare LENGTH(X) dove X è un valore stringa. Se X è un valore nullo, la funzione lunghezza restituirà un valore nullo.
È inoltre possibile utilizzare la funzione di lunghezza con valori numerici per ottenere la lunghezza del valore numerico.
Esempio:
Nell'esempio seguente, proveremo la sintassi della funzione LENGTH con i seguenti valori:
SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);
Questo ti darà:
Il risultato è il seguente:
- LUNGHEZZA('Una stringa') restituisce 8 che è la lunghezza della stringa “Una stringa”.
- LUNGHEZZA(NULL) restituisce null.
- LUNGHEZZA(20) restituisce 2, perché 20 è lungo 2 lunghezze.
- LUNGHEZZA(20.5) restituisce 4; Il punto mobile “.” viene conteggiato come un carattere, quindi avrai quattro caratteri: i 3 caratteri che corrispondono alla lunghezza dei numeri. Più un altro carattere per il punto mobile “.”.
Cambia custodia con funzione UPPER e funzione LOWER
UPPER(X) restituirà la stessa stringa x, ma rappresenterà tutti i caratteri della stringa in caratteri maiuscoli.
LOWER(X) restituirà la stessa stringa x, ma rappresenterà tutti i caratteri della stringa in caratteri piccoli.
UPPER e LOWER restituiscono valori null se si passa loro un valore null.
Se passi valori numerici a UPPER o LOWER, entrambi restituiranno il valore numerico esatto.
Esempio:
SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);
Questo ti darà:
Il risultato è il seguente:
- UPPER('una stringa') restituisce la stringa “una stringa” in rappresentazione in maiuscolo “UNA STRINGA".
- LOWER('A STRING') restituisce la stringa “UNA STRINGA" nella rappresentazione in lettere minuscole "una stringa".
- UPPER(20), LOWER(20) restituiscono lo stesso numero, poiché non hanno alcun effetto sui numeri.
- UPPER(NULL), LOWER(NULL) restituisce null perché abbiamo passato loro un valore null.
SQLite Funzione SUBSTR
La funzione SUBSTR restituisce un numero specifico di stringa, a partire da una posizione specifica. Puoi passare tre operandi alla funzione, in questo modo “SOTTOSTR(X,Y,Z)" come segue:
- X è la stringa letterale o la colonna di stringhe da analizzare. Puoi passare un valore letterale (valore statico) o un nome di colonna e, in questo caso, il valore verrà letto dai valori della colonna.
- Y è la posizione iniziale per sottrarre la stringa a partire da essa.
- Z è il numero di caratteri da analizzare a partire dalla posizione specifica Y. Questo numero è facoltativo, puoi ignorarlo e, in questo caso, SQLite sottrarrà la stringa a partire dalla posizione Y indicherà la fine della stringa.
Esempio:
Nella seguente query, utilizzeremo la funzione SUBSTR per ottenere i 4 caratteri a partire dal secondo carattere dei nomi degli studenti:
SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2) FROM Students;
Questo ti darà:
- SUBSTR(NomeStudente, 2, 4) sottostringa la stringa “Nome dello studente” a partire dal secondo carattere e restituiscono i successivi 4 caratteri.
- Tuttavia, nella funzione SUBSTR(NomeStudente, 2) non abbiamo specificato un numero per i caratteri da restituire, ecco perché SQLite ha restituito tutti i caratteri rimanenti in "Nome dello studente” partendo dalla seconda posizione.
Modificare parti di una stringa con SQLite Funzione SOSTITUISCI
REPLACE viene utilizzato per sostituire ogni stringa presente su un'altra stringa con una stringa.
REPLACE(X, Y, Z) – X è la stringa letterale o la colonna di input. Y è la stringa da sostituire con la stringa Z. Nota che sostituirà qualsiasi occorrenza della stringa Y con Z, non solo una.
Esempio:
Nella query seguente sostituiremo tutte le occorrenze della stringa “xx" con la stringa "SQLite"
SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');
Questo vi darà
- La funzione di sostituzione ha sostituito tutte le stringhe “xx" con la stringa "SQLite".
- Quindi l'output sarà "SQLite è molto leggero, SQLite è facile da imparare”.
Tagliare gli spazi vuoti con SQLite Funzione TRIM
TRIM rimuove gli spazi vuoti dall'inizio o dalla fine della stringa. Non rimuoverà nessuno spazio al centro della stringa, solo dall'inizio o dalla fine.
Esempio:
Nella query seguente utilizzeremo la funzione TRIM per rimuovere gli spazi vuoti dall'inizio e dalla fine della stringa.
Tieni presente che l'operatore di concatenazione “||” viene utilizzato per aggiungere un ulteriore “;” fino alla fine della corda. Per mostrarti che gli spazi vuoti sono stati rimossi nella finestra nera.
SELECT TRIM(' SQLite is easy to learn ') || ';';
Questo ti darà:
- Notate come sono stati rimossi gli spazi vuoti all'inizio e alla fine della stringa, sostituiti da ' ; ' alla fine.
Lettura dei valori assoluti con SQLite Funzione ABS
La funzione ABS restituisce il valore assoluto di un valore numerico. Il valore assoluto è il valore numerico senza alcun segno positivo o negativo. ABS(X) restituisce un valore che dipende dal valore di X come segue:
- Il valore assoluto di X se X è un valore numerico.
- Un valore NULL se X è un valore null.
- Valore "0.0" se X è una stringa.
Esempio:
Nella seguente query proveremo a ottenere il valore assoluto di una stringa, di un numero e di un valore nullo utilizzando la funzione ABS:
SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);
Questo ti darà:
I risultati sono i seguenti:
- ABS(-2), ABS(+2) restituisce 2, perché 2 è un valore assoluto sia per “-2” che per “+2”.
- ABS('una stringa') restituisce "0.0" perché hai passato un valore stringa e non un valore numerico.
- ABS(null) restituisce null perché gli hai passato un valore null.
Arrotondamento dei valori con la funzione ROUND in SQLite
I numeri decimali sono numeri con virgola mobile “.” su di esso, ad esempio, "20.5", "8.65". La parte a sinistra della virgola mobile è chiamata parte intera, mentre la parte a destra della virgola mobile è la parte decimale.
I numeri interi sono quei numeri senza alcun punto mobile su di essi. Ad esempio, "20", "8".
ROUND(X) converte i valori decimali o le colonne X solo in numeri interi. Verrà restituita la parte intera che è la parte a sinistra del punto decimale e tutte le cifre a destra del punto decimale verranno rimosse.
Esempio:
Nella seguente query proveremo la funzione ROUND con diverse opzioni:
SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');
Questo ti darà:
Il risultato è il seguente:
- ROUND(12.4354354) – restituisce il valore "12", perché non hai specificato il numero di cifre. COSÌ, SQLite tolta tutta la parte decimale.
- ROUND(12.4354354, 2) – restituisce il valore "12.44", perché hai specificato solo 2 cifre da arrotondare, ovvero le due cifre a destra del separatore decimale.
- ROUND(NULL) – restituisce null perché gli hai passato un valore null.
- ROUND('a string') – restituisce il valore "0.0" perché gli hai passato un valore stringa.
Trovare il tipo di dati dell'espressione con la funzione TYPEOF
Se vuoi scoprire il tipo di una colonna o un valore letterale, puoi utilizzare la funzione TYPEOF per farlo.
La funzione TYPEOF(X), dal suo nome, restituisce il tipo di dati dell'espressione X. Restituisce un valore stringa che indica il tipo di dati di X. Restituisce il valore in base ai tipi di dati, sia che si tratti di un valore "NULL", reale, testo, intero, …, ecc.
Esempio:
Nella seguente query proveremo la funzione TYPEOF con diversi tipi di valori letterali:
SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');
Questo ti darà:
I risultati restituiti sono i seguenti:
- TYPEOF(null) – restituisce null perché gli hai passato un valore null.
- TYPEOF(12) – restituisce un numero intero poiché 12 è un numero intero.
- TIPOOF(12.5) – restituisce REALE poiché 12.5 è un numero reale.
- TYPEOF('a string') – restituisce il testo poiché "una stringa" è un testo.
Trovare l'ultimo record inserito con SQLite LAST_INSERT_ROWID
SQLite assegna una chiave intera (Id) per tutte le righe di tutte le tabelle. Questo numero viene utilizzato per identificare in modo univoco queste righe.
Quando INSERITI una nuova riga su una tabella, SQLite assegnerà al rowid un valore univoco.
Se la tabella ha una chiave primaria dichiarata solo su una colonna e tale colonna è di tipo dati INTEGER, il valore di questa colonna verrà utilizzato come rowid.
La funzione LAST_INSERT_ROWID() restituisce il ROW_ID dell'ultima riga inserita in qualsiasi tabella del database. Nota che non richiede alcun operando.
Esempio:
Nell'esempio seguente eseguiremo la funzione LAST_INSERT_ROWID() come segue:
SELECT LAST_INSERT_ROWID();
Questo ti darà:
- LAST_INSERT_ROWID() restituisce 0 perché non sono presenti righe inserite in nessuna tabella nella connessione al database corrente.
Ora inseriamo un nuovo studente ed eseguiamo nuovamente la funzione LAST_INSERT_ROWID() dopo l'istruzione insert, in questo modo:
INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12'); SELECT LAST_INSERT_ROWID();
Questo ti darà:
- Dopo aver inserito un nuovo studente con ID 11, LAST_INSERT_ROWID() restituirà l'ID dell'ultima riga inserita che è 11.
Ottenere la versione del tuo SQLite biblioteca
Per ottenere la versione del tuo SQLite libreria, è necessario chiamare la funzione SQLITE_VERSION().
Esempio:
Scopriamo qual è la versione del SQLite stiamo utilizzando eseguendo il seguente comando:
SELECT SQLITE_VERSION();
Questo ti darà:
SQLITE_VERSION() restituisce 3.9.2 che è la versione del SQLite stiamo utilizzando.
Creazione di funzioni definite dall'utente e aggregazione di funzioni definite dall'utente
Per alcuni utenti, il SQLite le funzioni principali sono limitate. Potrebbe essere necessario aggiungere funzioni personalizzate per le loro esigenze personalizzate.
SQLite non supporta la creazione di funzioni definite dall'utente. A differenza di altri sistemi di gestione di database, non è possibile creare funzioni definite dall'utente in SQLite direttamente.
Tuttavia, puoi creare una funzione utilizzando linguaggi di programmazione come C#, C, PHP o C++ e ha collegato quella funzione al core SQLite funzioni in SQLite libreria stessa, utilizzando “funzione_crea_sqlite3" funzione. Quindi puoi riutilizzarli nel tuo database.
Esempio:
Nell'esempio seguente creeremo una funzione definita dall'utente utilizzando C# linguaggio di programmazione e aggiungerlo a SQLite funzioni:
[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)] public class DoubleValue: SQLiteFunction { public override object Invoke(object[] args) { return args[0] * 2; } }
Questo frammento di codice è scritto nel file Linguaggio di programmazione C#; crea una funzione C# utilizzando il codice C#.
Il nome della funzione sarà “DoubleValore"prende un parametro e restituisce il suo valore moltiplicato per 2.
Tieni presente che C# aggiunge automaticamente questa funzione a SQLite. Tutto ciò di cui hai bisogno è compilare ed eseguire questo codice. Quindi C# aggiungerà quella funzione con lo stesso nome all'elenco di SQLite funzioni. Quindi puoi utilizzare questa funzione in SQLite.
Allo stesso modo utilizzando linguaggi di programmazione come C#, C, PHP o C++, è inoltre possibile creare funzioni aggregate definite dall'utente. Che vengono utilizzati per estendere le funzioni aggregate in SQLite e usali per creare funzioni aggregate personalizzate.
Sommario
- SQLite fornisce un set completo di funzioni integrate che semplificano il lavoro con le tabelle e le colonne del database, come abbiamo visto. Puoi utilizzare queste funzioni con colonne e valori letterali all'interno di qualsiasi espressione nelle query SQL.
- È inoltre possibile utilizzare la funzione di lunghezza con valori numerici per ottenere la lunghezza del valore numerico.
- UPPER e LOWER restituiscono valori null se si passa loro un valore null.
- La funzione SUBSTR restituisce un numero specifico di stringa, a partire da una posizione specifica.
- REPLACE viene utilizzato per sostituire ogni stringa presente su un'altra stringa con una stringa.
- TRIM rimuove gli spazi vuoti dall'inizio o dalla fine della stringa.
- La funzione ABS restituisce il valore assoluto di un valore numerico.
- ROUND(X) converte i valori decimali o le colonne X solo in numeri interi.
- La funzione TYPEOF(X), dal suo nome, restituisce il tipo di dati dell'espressione X.
- La funzione LAST_INSERT_ROWID() restituisce il ROW_ID dell'ultima riga inserita in qualsiasi tabella del database.