Vai al contenuto

Gruppo Stringhe di Testo↵

Abstract

Questo gruppo contiene le funzioni che operano sulle stringhe es. sostituzione, conversione in maiuscolo.


ascii↵

Restituisce il codice unicode associato al primo carattere di una stringa.

Sintassi:

  • ascii(string)

Argomenti:

  • string la stringa da convertire in codice unicode

Esempi:

ascii('Q') → 81


char↵

Restituisce il carattere associato ad un codice unicode.

Sintassi:

  • char(code)

Argomenti:

  • code un numero codice unicode

Esempi:

char(81) → 'Q'
char(178) → '²'
char(179) → '³'


concat↵

Concatena svariate stringhe in una sola. Valori NULL sono convertiti in stringhe vuote. Altri valori (come i numeri) sono convertiti in stringa.

Sintassi:

  • concat(string1, string2, …)

Argomenti:

  • string un valore stringa

Esempi:

concat('To', 'tò') → 'Totò'
concat('a','b','c','d','e') → 'abcde'
concat('Anno ', 2018) → 'Anno 2018'
concat('QGIS 3.0', NULL) → 'QGIS 3.0'


concat_ws↵

Concatena tutti gli argomenti tranne il primo, usando il primo argomento come separatore. Gli argomenti NULL vengono ignorati (non producono un separatore doppio o vuoto).

Sintassi:

  • concat_ws(separator, string1, string2, …)

Argomenti:

  • separator la stringa usata come separatore tra i valori
  • string un valore stringa; gli argomenti NULL vengono ignorati

Esempi:

concat_ws('-', 'a', 'b', 'c') → 'a-b-c'
concat_ws(', ', 'Rossi', NULL, 'Mario') → 'Rossi, Mario'

Feature introdotta a partire da QGIS 4.2


format↵

Formatta una stringa usando gli argomenti forniti.

Sintassi:

  • format(string, arg1, arg2, …)

Argomenti:

  • string Una stringa con segnaposto %1, %2 e così via per gli argomenti. I segnaposto possono essere ripetuti. Il segnaposto con il numero più basso viene sostituito da arg1, il successivo da arg2, ecc.
  • arg Qualsiasi tipo. Qualsiasi numero di argomenti.

Esempi:

format('This %1 a %2','is', 'test') → 'Questo è un test'
format('This is %2','a bit unexpected but 2 is lowest number in string','normal') → 'This is a bit unexpected but 2 is lowest number in string'


format_date↵

Formatta una data o una stringa in un formato stringa personalizzato. Usa le Qt date/time format strings. Vedi QDateTime::toString.

Sintassi:

  • Format_date(datetime, format[,language])

Argomenti:

  • datetime valora data, ora, o data/ora
  • format Modello di stringhe usato per formattare la stringa.
Espressione Risultato
d il giorno in numero senza lo zero iniziale (da 1 a 31)
dd il giorno in numero con lo zero iniziale (da 01 a 31)
ddd il nome locale del giorno abbreviato (es. da 'Mon' a 'Sun')
dddd il nome locale del giorno per esteso (es. da 'Monday' a 'Sunday')
M il mese in numero senza lo zero iniziale (1-12)
MM il mese in numero con lo zero iniziale (01-12)
MMM il nome locale del mese abbreviato (es. da 'Jan' a 'Dec')
MMMM il nome locale del mese per esteso (es. da 'January' a 'December')
yy l'anno come un numero a due cifre (00-99)
yyyy l'anno come un numero a quattro cifre

Queste espressioni possono essere usate per la parte time della stringa da formattare:

Espressione Risultato
h l'ora senza lo zero iniziale (da 0 a 23 o da 1 a 12 se visualizzi AM/PM)
hh l'ora con lo zero iniziale (da 00 a 23 o da 01 a 12 se visualizzi AM/PM)
H l'ora senza lo zero iniziale (da 0 a 23, anche se visualizzi AM/PM)
HH l'ora con lo zero iniziale (da 00 a 23, anche se visualizzi AM/PM)
m il minuto senza lo zero iniziale (da 0 a 59)
mm il minuto con lo zero iniziale (da 00 a 59)
s il secondo senza lo zero iniziale (da 0 a 59)
ss il secondo con lo zero iniziale (da 00 a 59)
z i millisecondi senza gli zeri iniziali (da 0 a 999)
zzz i millisecondi con gli zeri iniziali (da 000 a 999)
AP o A interpretato come un orario nel formato AM/PM. AP deve essere "AM" oppure "PM".
ap o a interpretato come un orario nel formato AM/PM. ap deve essere "am" oppure "pm".
  • language lingua (minuscolo, due o tre lettere, codice lingua ISO 639) utilizzata per formattare la data in una stringa personalizzata. Per impostazione predefinita, viene utilizzata la locale dell'utente di QGIS corrente.

Esempi:

format_date('2012-05-15','dd.MM.yyyy') → '15.05.2012'
format_date('2012-05-15','d MMMM yyyy','fr') → '15 mai 2012'
format_date('2012-05-15','dddd') → 'Tuesday', se la lingua corrente è una variante inglese
format_date('2012-05-15 13:54:20','dd.MM.yy') → '15.05.12'
format_date('13:54:20','hh:mm AP') → '01:54 PM'


format_number↵

Restituisce un numero formattato con il separatore locale per le migliaia. Inoltre tronca il numero al numero di posti forniti.

Sintassi:

  • format_number(number[,places][,language])

[ ] indica componenti opzionali

Argomenti:

  • number numero da formattare
  • places intero rappresentante il numero di posizioni decimali a cui troncare la stringa.
  • language lingua (minuscolo, due o tre lettere, codice lingua ISO 639) utilizzata per formattare il numero in una stringa. Per impostazione predefinita, viene utilizzata la locale dell'utente di QGIS corrente.

Esempi:

format_number(10000000.332,2) → '10,000,000.33' se ad es. la locale corrente è una variante inglese
format_number(10000000.332,2,'fr') → '10 000 000,33'


left↵

Restituisce una sottostringa che contiene gli n caratteri più a sinistra della stringa.

Sintassi:

  • left(string, length)

Argomenti:

  • string una stringa
  • length intero. Il numero di caratteri da estrarre dalla parte sinistra della stringa.

Esempi:

left('Hello World',5) → 'Hello'


length↵

Restituisce il numero di caratteri in una stringa o la lunghezza di una geometria di tipo linestring.

Variabile stringa↵

Restituisce il numero di caratteri contenuti in una stringa.

Sintassi:

  • length(string)

Argomenti:

  • string stringa della quale calcolare la lunghezza

Esempi:

length('hello') → 5

Variabile geometria↵

Calcola la lunghezza di un oggetto a geometria lineare. I calcoli sono sempre planimetrici nel Sistema di Riferimento Spaziale (SR) di detta geometria, e l'unità di misura della lunghezza restituita è conforme all'unità di misura del SR. Ciò differisce dal calcolo eseguito dalla funzione $length, la quale esegue calcoli ellissoidici basati sull'ellissoide del progetto e sulle impostazioni delle unità di distanza.

Sintassi:

  • length(geometry)

Argomenti:

  • geometry oggetto geometria linea

Esempi:

length(geom_from_wkt('LINESTRING(0 0, 4 0)')) → 4


lower↵

Converte una stringa in lettere minuscole.

Sintassi:

  • lower(string)

Argomenti:

  • string la stringa da convertire in minuscolo

Esempi:

lower('HELLO World') → 'hello world'


lpad↵

Restituisce una stringa riempita a sinistra fino alla larghezza specificata, utilizzando un carattere di riempimento. Se la larghezza della destinazione è inferiore alla lunghezza della stringa, la stringa viene troncata.

Sintassi:

  • lpad(string, width, fill)

Argomenti:

  • string stringa da riempire
  • width lunghezza della nuova stringa
  • fill carattere con il quale riempire lo spazio rimanente

Esempi:

lpad('Hello', 10, 'x') → 'xxxxxHello'
lpad('Hello', 3, 'x') → 'Hel'

Altri esempi utili↵

se volessi popolare un campo in modo da ottenere segnale01.png, segnale02.png...segnale99.png

id path
10 segnale01.png
15 segnale02.png
22 segnale03.png
.. ..
520 segnale99.png

espressione utilizzata:

'segnale' || lpad( @row_number ,2, '00' )|| '.png' → 'segnale01.png'

--

per ricostruire un identificativo univoco CODICE_ASC

CODICE_STR NUM_CIV BARRATO CODICE_ASC
000020 1 0000002000001
000575 1 0000057500001
001785 1 1 00001785000011
005495 38 1 00005495000381
001480 572 10 000014800057210
000150 1 0000015000001
lpad("CODICE_STR",8,0)||
lpad( "NUM_CIV",5,0) ||
coalesce("BARRATO",'')


ltrim↵

Rimuove la stringa più lunga contenente solo i caratteri specificati (un carattere spazio come impostazione predefinita) dall'inizio della stringa.

Sintassi:

  • ltrim(string[, characters=' '])

Argomenti:

  • string stringa da troncare
  • characters caratteri da troncare

Esempi:

ltrim(' hello world ') → 'hello world '
ltrim('zzzytest', 'xyz') → 'test'


regexp_match↵

Restituisce la prima posizione di corrispondenza che soddisfa un'espressione regolare all'interno di una stringa, o 0 se la sottostringa non viene trovata.

Sintassi:

  • regexp_match(input_string, regex)

Argomenti:

  • input_string la stringa da confrontare con l'espressione regolare
  • regex L'espressione regolare da confrontare. I caratteri backslash (\) devono essere doppiamente escaped (es "\s" per selezionare un carattere spazio bianco).

Esempi:

regexp_match('QGIS ROCKS','\\sROCKS') → 5
regexp_match('Budač','udač\\b') → 2

Osservazioni:

link Wikipedia

  • ^ «apice» ha due significati: se messo all’inizio della regex impone che la linea cominci con quello che segue l’apice; se usato con le parentesi quadre e messo prima di un carattere significa: tranne il carattere che segue, è una negazione
  • $ «dollar » se messa alla fine della regex impone che la linea finisca con quello che precede il dollaro
  • . «punto» qualunque carattere
  • * «asterisco» accetta zero o più ripetizioni del carattere precedente
  • + «più» accetta una o più ripetizioni del carattere precedente
  • [ ] «parentesi quadre» tutti i caratteri all’interno delle [ ] sono accettati: le due parentesi si comportano come un singolo carattere
  • [^ ] «parentesi quadre con apice» tutti i caratteri tranne quelli all’interno delle [ ] sono accettati
  • / «slash» inizia/termina l’espressione regolare
  • «barra rovesciata» tratta il carattere speciale che segue come un normale carattere testuale o viceversa tratta un normale carattere come un carattere speciale

link1

link2

regexp_match('QGIS ROCKS ciao come stai','$') = length ('QGIS ROCKS ciao come stai')+1

--

Altri esempi↵

vedi qui

regexp_matches( "catasto" ,'^(.+)\\.(.+)\\.(.+)\\.(.+)_(.+)\\.(.+)$')[x]

con x che varia da 0 a 5


regexp_replace↵

Restituisce una stringa con la parte che soddisfa l'espressione regolare sostituita.

Sintassi:

  • regexp_replace(input_string, regex, replacement)

Argomenti:

  • input_string la stringa in cui sostituire
  • regex L'espressione regolare per sostituire. I caratteri backslash devono essere double escaped (es "\s" per selezionare un carattere spazio bianco).
  • replacement La stringa che sostituirà qualsiasi occorrenza corrispondente dell'espressione regolare passata. I gruppi catturati possono essere inseriti nella stringa di sostituzione usando \\1, \\2, etc.

Esempi:

regexp_replace('QGIS SHOULD ROCK','\\sSHOULD\\s',' DOES ') → 'QGIS DOES ROCK'
regexp_replace('ABC123','\\d+','') → 'ABC'
regexp_replace('my name is John','(.*) is (.*)','\\2 is \\1') → 'Il mio nome è Giovanni'

Esempi:o 2

Tabella:

id particella
1 00AXJ
2 000BBG
3 0JJU

Aggiornare il campo particella togliendo gli zeri iniziali:

espressione da usare:

regexp_replace(  "particella" ,'^0+','')`

risultato:

id particella
1 AXJ
2 BBG
3 JJU

ecco un tool dove provare le regexp: https://regex101.com/r/SSDBmj/1

Esempi:o 3

id valore
1 data20200224
2 data20200225
3 data20200226

eliminare data e inserire un simbolo tra anno, mese e giorno

espressione da usare:

regexp_replace("valore" ,'(data)(....)(..)(..)','\\2-\\3-\\4')`

risultato:

id valore
1 2020-02-24
2 2020-02-25
3 2020-02-26

Esempi:o 4

Tabella:

id particella
1 00AXJ.su
2 000BBG.cot
3 0JJU.1234

Aggiornare il campo particella togliendo tutto quello dopo il punto (.):

espressione da usare:

regexp_replace( 'xxxxx.yyy','\\.(.+)$','')`

risultato:

id particella
1 00AXJ
2 000BBG
3 0JJU

qui altri esempi


regexp_substr↵

Restituisce la porzione di una stringa che soddisfa l'espressione regolare passata.

Sintassi:

  • regexp_substr(input_string, regex)

Argomenti:

  • input_string la stringa in cui cercare
  • regex L'espressione regolare da contro abbinare. I caratteri backslash devono essere "double escaped" ( es "\\s" per selezionare un carattere spazio).

Esempi:

regexp_substr('abc123','(\\d+)') → '123'


replace↵

Restituisce una stringa con la stringa, array o mappa di stringhe passate sostituite.

Variabile stringa & array↵

Restituisce una stringa con la stringa o array di stringa passate sostituite da una stringa o un array di stringhe.

Sintassi:

  • replace(string, before, after)

Argomenti:

  • string la stringa in ingresso
  • before la stringa o array di stringhe da sostituire
  • after la stringa o l'array di stringe da usare come sostituzione

Esempi:

replace('QGIS SHOULD ROCK','SHOULD','DOES') → 'QGIS DOES ROCK'
replace('QGIS ABC',array('A','B','C'),array('X','Y','Z')) → 'QGIS XYZ'
replace('QGIS',array('Q','S'),'') → 'GI'

Variabile mappa↵

Restituisce una stringa con le chiavi della mappa fornite sostituite dai valori abbinati. Sono valutate per prime le chiavi della mappa più lunghe.

Sintassi:

  • replace(string, map)

Argomenti:

  • string la stringa in ingresso
  • map la mappa che contiene le chiavi e i valori

Esempi:

replace('APP SHOULD ROCK',map('APP','QGIS','SHOULD','DOES')) → 'QGIS DOES ROCK'
replace('forty two',map('for','4','two','2','forty two','42')) → '42'


Restituisce una sottostringa che contiene gli n caratteri più a destra della stringa.

Sintassi:

  • right(string, length)

Argomenti:

  • string una stringa
  • length intero. Il numero di caratteri da estrarre dalla parte destra della stringa.

Esempi:

right('Hello World',5) → 'World'


rpad↵

Restituisce una stringa riempita a destra della larghezza specificata, utilizzando un carattere di riempimento. Se la larghezza della destinazione è inferiore alla lunghezza della stringa, la stringa viene troncata.

Sintassi:

  • rpad(string, width, fill)

Argomenti:

  • string stringa da riempire
  • width lunghezza della nuova stringa
  • fill carattere con il quale riempire lo spazio rimanente

Esempi:

rpad('Hello', 10, 'x') → 'Helloxxxxx'
rpad('Hello', 3, 'x') → 'Hel'


rtrim↵

Rimuove la stringa più lunga contenente solo i caratteri specificati (un carattere spazio come impostazione predefinita) dalla fine della stringa.

Sintassi:

  • rtrim(string[, characters=' '])

Argomenti:

  • string stringa da troncare
  • characters caratteri da troncare

Esempi:

rtrim(' hello world ') → ' hello world'
rtrim('testxxzx', 'xyz') → 'test'


strpos↵

Restituisce la prima posizione di corrispondenza di una sottostringa dentro in un'altra stringa o 0 se la sottostringa non viene trovata.

Sintassi:

  • strpos(haystack, needle)

Argomenti:

  • haystack stringa in cui deve essere cercata
  • needle stringa da cercare

Esempi:

strpos('HELLO WORLD','WORLD') → 7
strpos('HELLO WORLD','GOODBYE') → 0


substr↵

Restituisce una parte di una stringa.

Sintassi:

  • substr(string, start[, length])

[ ] indica componenti opzionali

Argomenti:

  • string l'intera stringa in entrata
  • start intero rappresentante la posizione di partenza dalla quale estrarre; se il valore di partenza è negativo, la stringa restituita inizierà dalla fine della stringa meno il valore di partenza
  • length intero rappresentante la lunghezza della stringa da estrarre; se la lunghezza è negativa, la stringa restituita ometterà la lunghezza data di caratteri dalla fine della stringa

Esempi:

substr('HELLO WORLD',3,5) → 'LLO W'
substr('HELLO WORLD',3,5) → 'WORLD'
substr('HELLO WORLD',-5) → 'WORLD'
substr('HELLO',3,-1) → 'LL'
substr('HELLO WORLD',-5,2) → 'WO'
substr('HELLO WORLD',-5,-1) → 'WORL'


substr_count↵

Conta il numero di occorrenze di una sottostringa all'interno di una stringa. Per impostazione predefinita, la funzione conta le occorrenze non sovrapposte (come in Python). Se il terzo argomento è impostato su true, la funzione conta le occorrenze sovrapposte (come in Qt).

Sintassi:

  • substr_count(string, substring[,overlapping])

[ ] indica componenti opzionali

Argomenti:

  • string la stringa di input in cui effettuare la ricerca
  • substring la sottostringa da cercare
  • overlapping parametro opzionale per controllare se contare le occorrenze sovrapposte. Il valore predefinito è FALSE (conteggio non sovrapposto). Impostare su TRUE per contare le occorrenze sovrapposte.

Esempi:

substr_count('banana', 'an') → 2  -- occorrenze non sovrapposte di 'an' in 'banana'
substr_count('Funniness', 'n') → 3  -- occorrenze non sovrapposte di 'n' in 'Funniness'
substr_count('aaaaa', 'aa') → 2  -- occorrenze non sovrapposte di 'aa' in 'aaaaa'
substr_count('aaaaa', 'aa', true) → 4  -- occorrenze sovrapposte di 'aa' in 'aaaaa'
substr_count('BANANA', 'an') → 0  -- sensibile alle maiuscole/minuscole, nessuna corrispondenza

Feature introdotta a partire da QGIS 4.0


title↵

Converte tutte le parole in "title case" (tutte le parole in minuscolo con la prima lettera maiuscola)

Sintassi:

  • title(string)

Argomenti:

  • string stringa da convertire in minuscolo con la prima lettera maiuscola

Esempi:

title('hello WOrld') → 'Hello World'


to_string↵

Converte un numero in stringa.

Sintassi:

  • to_string(number)

Argomenti:

  • number Valore intero o reale. Il numero da convertire in stringa.

Esempi:

to_string(123.23) → '123.23'


trim↵

Rimuove tutti gli spazi vuoti (spazi, tabulazioni, etc.) all'inizio e alla fine di una stringa.

Sintassi:

  • trim(string)

Argomenti:

  • string stringa da troncare

Esempi:

trim(' hello world   ') → 'hello world'


upper↵

Converte una stringa in lettere maiuscole.

Sintassi:

  • upper(string)

Argomenti:

  • string la stringa da convertire in maiuscolo

Esempi:

upper('hello WOrld') → 'HELLO WORLD'


unaccent↵

Rimuove accenti e altri segni diacritici da una stringa, sostituendo i caratteri accentati con i loro equivalenti ASCII non accentati. Questa funzione è compatibile con la funzione unaccent() di PostgreSQL e utilizza le stesse regole di mappatura complete.

La funzione gestisce:

  • Segni diacritici (é→e, ñ→n, ü→u, ecc.)
  • Legature (Æ→AE, œ→oe, ecc.)
  • Lettere speciali (ß→ss, ł→l, ð→d, ecc.)
  • Caratteri di compatibilità (²C→°C, ½→ ½, ecc.)
  • Caratteri speciali cirillici (ё→e, Ё→E)
  • Caratteri a larghezza intera (#→#, ecc.)

I casi di utilizzo comuni includono la normalizzazione del testo per le operazioni di ricerca, la creazione di identificatori o nomi di file ASCII sicuri da testo internazionale e la corrispondenza dell'input dell'utente indipendentemente dall'uso dell'accento.

Sintassi:

  • unaccent(string)

Argomenti:

  • string la stringa da cui rimuovere gli accenti. Se NULL, la funzione restituisce NULL.

Esempi:

unaccent('Hôtel') → 'Hotel'
unaccent('crème brûlée') → 'creme brulee'
unaccent('Româneste') → 'Romaneste'
unaccent('Æsir & Œuvre') → 'AEsir & OEuvre'
unaccent('Łódź') → 'Lodz'
unaccent('straße') → 'strasse'
unaccent('ёлка') → 'елка'  -- cirillico yo diventa ye
unaccent('°C') → '°C'  -- grado Celsius

Note:

Questa funzione è particolarmente utile quando si desidera:

  • Cercare o filtrare dati ignorando gli accenti (es. 'Jose' corrisponde a 'José')
  • Creare stringhe URL-safe o filename-safe da testo internazionale
  • Normalizzare l'input dell'utente per una memorizzazione o un confronto uniforme
  • Preparare testo per sistemi con supporto Unicode limitato

La funzione utilizza internamente la normalizzazione Unicode NFC per garantire una gestione coerente dei caratteri composti e decomposti.

Feature introdotta a partire da QGIS 4.0


wordwrap↵

Restituisce una stringa posta a capo ad un massimo/minimo numero di caratteri.

Sintassi:

  • wordwrap(string, wrap_length, delimiter_string)

Argomenti:

  • string la stringa da spezzare
  • wrap_length un intero. Se wrap_length è positivo il numero rappresenta il numero massimo ideale di caratteri a cui spezzare; se negativo, il numero rappresenta il numero minimo di caratteri a cui spezzare.
  • delimiter_string il delimitatore stringa per spezzare in una nuova linea (opzionale).

Esempi:

wordwrap('UNIVERSITY OF QGIS',13) → 'UNIVERSITY OF 
QGIS'
wordwrap('UNIVERSITY OF QGIS',-3) → 'UNIVERSITY OF 
QGIS'

Per legende con testo lungo, tipico delle legende per carte geologiche:

wordwrap(@symbol_label ,50)