[QGIS-it-user] calcolatore di campi - eliminare parte di una stringa

Salve

ho una colonna di un file vettoriale con delle stringhe alfanumeriche.

La struttura di ogni stringa è del tipo

primaparte_secondaparte

ebbene io vorrei eliminare con una formula la seconda parte del testo compreso l’underscore quindi elimunare _secondaparte

e lasciare primaparte.

Qualcuno può aiutarmi?

Grazie

Ciao Giacomo,
la descrizione del problema non è precisa e quindi può essere interpretata in vari modi.

Se "primaparte" ha un numero di caratteri fisso, allora può essere usata la funzione "left" [1].
Se "primaparte" non ha un numero di caratteri fisso, ma "secondaparte" ha un numero di caratteri fisso, allora può essere usata la funzione "substr" [2].
Se non ricorrono i primi due casi, e se "primaparte" non contiene mai il carattere "_", allora può essere usata, per esempio, la funzione "string_to_array" [3] utilizzando il carattere "_" come delimitatore ed estraendo il primo elemento dell'array utilizzando la funzione "array_first" [4] o l'operatore indice "" [5].

[1] https://docs.qgis.org/3.22/it/docs/user_manual/expressions/functions_list.html#left
[2] https://docs.qgis.org/3.22/it/docs/user_manual/expressions/functions_list.html#substr
[3] https://docs.qgis.org/3.22/it/docs/user_manual/expressions/functions_list.html#string-to-array
[4] https://docs.qgis.org/3.22/it/docs/user_manual/expressions/functions_list.html#array-first
[5] https://docs.qgis.org/3.22/it/docs/user_manual/expressions/functions_list.html#expression-function-operators-index

A presto.

Andrea

Il 12/10/2022 11:24, Giacomo Fontanelli ha scritto:

Salve

ho una colonna di un file vettoriale con delle stringhe alfanumeriche.

La struttura di ogni stringa è del tipo

primaparte_secondaparte

ebbene io vorrei eliminare con una formula la seconda parte del testo compreso l'underscore quindi elimunare _secondaparte

e lasciare primaparte.

Qualcuno può aiutarmi?

Grazie

_______________________________________________
QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Ciao Giacomo,

in alternativa alla soluzione di Andrea, prova la formula left ed al posto del numero di caratteri fisso inserisci seconda formula regexp_match

···

utilizzando “_” come regex

Alberto

Salve

sia primaparte che secondaparte non hanno un numero di carattere fisso.

Ha funzionato con la seguente formula

array_first((string_to_array((“Name”), ‘_’, ’ ')))

dove Name è il nome della colonna.

Grazie a tutti

Il giorno mer 12 ott 2022 alle ore 11:55 Studio Multiservice s.s. <studio.multiservice.mantova@gmail.com> ha scritto:

Ciao Giacomo,

in alternativa alla soluzione di Andrea, prova la formula left ed al posto del numero di caratteri fisso inserisci seconda formula regexp_match

utilizzando “_” come regex

Alberto

Il giorno mer 12 ott 2022 alle ore 11:29 Giacomo Fontanelli <giacomofontanelli76@gmail.com> ha scritto:

Salve

ho una colonna di un file vettoriale con delle stringhe alfanumeriche.

La struttura di ogni stringa è del tipo

primaparte_secondaparte

ebbene io vorrei eliminare con una formula la seconda parte del testo compreso l’underscore quindi elimunare _secondaparte

e lasciare primaparte.

Qualcuno può aiutarmi?

Grazie


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Il 12/10/2022 14:53, Giacomo Fontanelli ha scritto:

array_first((string_to_array(("Name"), '_', ' ')))

Ciao Giacomo,
ottimo, anche se c'è qualche parentesi che può essere evitata:

array_first(string_to_array("Name", '_', ' '))

inoltre forse l'ultimo parametro usato in string_to_array non è necessario (ma dipende dai tuoi dati e da cosa vuoi ottenere).

A presto.

Andrea

La funzione String_to_array è una bella funzione, molto utile, ma per questi tipi di problemi uso le regex (espressioni regolari) che permettono di risolvere una più vasta casistica.

Supponiamo di avere la seguente tabella degli attributi:

id,testo
1,CIAO_Ciao
2,ciao_arrivederci
3,123 ciao_arrivederci 123
4,_ciao_cucu
5,1ciao_2ciao 3ciao_4ciao 123

l’espressione che utilizzerei:

regexp_replace(“testo”,‘(.+)_(.+)’,‘\1’)

dove:

‘(.+)(.+)’ : divide il testo in due gruppi separati dal '’;

‘\1’ : restituisce il primo gruppo; per il secondo gruppo utilizzare ‘\2’

https://docs.qgis.org/3.22/en/docs/user_manual/expressions/functions_list.html#regexp-replace

saluti

Il giorno mer 12 ott 2022 alle ore 16:37 Andrea Giudiceandrea via QGIS-it-user <qgis-it-user@lists.osgeo.org> ha scritto:

Il 12/10/2022 14:53, Giacomo Fontanelli ha scritto:

array_first((string_to_array((“Name”), ‘_’, ’ ')))

Ciao Giacomo,
ottimo, anche se c’è qualche parentesi che può essere evitata:

array_first(string_to_array(“Name”, ‘_’, ’ '))

inoltre forse l’ultimo parametro usato in string_to_array non è
necessario (ma dipende dai tuoi dati e da cosa vuoi ottenere).

A presto.

Andrea


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Ing. Salvatore Fiandaca
mobile.:+39 327.493.8955
m: pigrecoinfinito@gmail.com
C.F.: FNDSVT71E29Z103G
P.IVA: 06597870820
membro QGIS Italia - http://qgis.it/
socio GFOSS.it - http://gfoss.it/
member OSGeo - https://www.osgeo.org/member/fiandaca/
blog:**** https://pigrecoinfinito.com/
FB: Co-admin - https://www.facebook.com/qgis.it/****
TW: ****https://twitter.com/totofiandaca

43°51’0.54"N 10°34’27.62"E - EPSG:4326

“Se la conoscenza deve essere aperta a tutti,
perchè mai limitarne l’accesso?”
R. Stallman

Questo documento, allegati inclusi, contiene informazioni di proprietà di FIANDACA SALVATORE e deve essere utilizzato esclusivamente dal destinatario in relazione alle finalità per le quali è stato ricevuto. E’ vietata qualsiasi forma di riproduzione o divulgazione senza l’esplicito consenso di FIANDACA SALVATORE. Qualora fosse stato ricevuto per errore si prega di informare tempestivamente il mittente e distruggere la copia in proprio possesso.

…che tsunami di informazioni!!! …ora ce ne è abbastanza da studiare e fare prove per un mese …Grazie !!!

Il giorno mer 12 ott 2022 alle ore 20:01 Totò Fiandaca <pigrecoinfinito@gmail.com> ha scritto:

La funzione String_to_array è una bella funzione, molto utile, ma per questi tipi di problemi uso le regex (espressioni regolari) che permettono di risolvere una più vasta casistica.

Supponiamo di avere la seguente tabella degli attributi:

id,testo
1,CIAO_Ciao
2,ciao_arrivederci
3,123 ciao_arrivederci 123
4,_ciao_cucu
5,1ciao_2ciao 3ciao_4ciao 123

l’espressione che utilizzerei:

regexp_replace(“testo”,‘(.+)_(.+)’,‘\1’)

dove:

‘(.+)(.+)’ : divide il testo in due gruppi separati dal '’;

‘\1’ : restituisce il primo gruppo; per il secondo gruppo utilizzare ‘\2’

https://docs.qgis.org/3.22/en/docs/user_manual/expressions/functions_list.html#regexp-replace

saluti

Il giorno mer 12 ott 2022 alle ore 16:37 Andrea Giudiceandrea via QGIS-it-user <qgis-it-user@lists.osgeo.org> ha scritto:

Il 12/10/2022 14:53, Giacomo Fontanelli ha scritto:

array_first((string_to_array((“Name”), ‘_’, ’ ')))

Ciao Giacomo,
ottimo, anche se c’è qualche parentesi che può essere evitata:

array_first(string_to_array(“Name”, ‘_’, ’ '))

inoltre forse l’ultimo parametro usato in string_to_array non è
necessario (ma dipende dai tuoi dati e da cosa vuoi ottenere).

A presto.

Andrea


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Ing. Salvatore Fiandaca
mobile.:+39 327.493.8955
m: pigrecoinfinito@gmail.com
C.F.: FNDSVT71E29Z103G
P.IVA: 06597870820
membro QGIS Italia - http://qgis.it/
socio GFOSS.it - http://gfoss.it/
member OSGeo - https://www.osgeo.org/member/fiandaca/
blog:**** https://pigrecoinfinito.com/
FB: Co-admin - https://www.facebook.com/qgis.it/****
TW: ****https://twitter.com/totofiandaca

43°51’0.54"N 10°34’27.62"E - EPSG:4326

“Se la conoscenza deve essere aperta a tutti,
perchè mai limitarne l’accesso?”
R. Stallman

Questo documento, allegati inclusi, contiene informazioni di proprietà di FIANDACA SALVATORE e deve essere utilizzato esclusivamente dal destinatario in relazione alle finalità per le quali è stato ricevuto. E’ vietata qualsiasi forma di riproduzione o divulgazione senza l’esplicito consenso di FIANDACA SALVATORE. Qualora fosse stato ricevuto per errore si prega di informare tempestivamente il mittente e distruggere la copia in proprio possesso.


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Grazie Totò

a me le regexp paiono i codici per dialogare con gli extraterrestri :slight_smile:

Comunque String_to_array ha funzionato e sono contento.

A presto

Giacomo

Il giorno gio 13 ott 2022 alle ore 19:16 Marco Spaziani <spaziani.marco@gmail.com> ha scritto:

…che tsunami di informazioni!!! …ora ce ne è abbastanza da studiare e fare prove per un mese …Grazie !!!

Il giorno mer 12 ott 2022 alle ore 20:01 Totò Fiandaca <pigrecoinfinito@gmail.com> ha scritto:

La funzione String_to_array è una bella funzione, molto utile, ma per questi tipi di problemi uso le regex (espressioni regolari) che permettono di risolvere una più vasta casistica.

Supponiamo di avere la seguente tabella degli attributi:

id,testo
1,CIAO_Ciao
2,ciao_arrivederci
3,123 ciao_arrivederci 123
4,_ciao_cucu
5,1ciao_2ciao 3ciao_4ciao 123

l’espressione che utilizzerei:

regexp_replace(“testo”,‘(.+)_(.+)’,‘\1’)

dove:

‘(.+)(.+)’ : divide il testo in due gruppi separati dal '’;

‘\1’ : restituisce il primo gruppo; per il secondo gruppo utilizzare ‘\2’

https://docs.qgis.org/3.22/en/docs/user_manual/expressions/functions_list.html#regexp-replace

saluti

Il giorno mer 12 ott 2022 alle ore 16:37 Andrea Giudiceandrea via QGIS-it-user <qgis-it-user@lists.osgeo.org> ha scritto:

Il 12/10/2022 14:53, Giacomo Fontanelli ha scritto:

array_first((string_to_array((“Name”), ‘_’, ’ ')))

Ciao Giacomo,
ottimo, anche se c’è qualche parentesi che può essere evitata:

array_first(string_to_array(“Name”, ‘_’, ’ '))

inoltre forse l’ultimo parametro usato in string_to_array non è
necessario (ma dipende dai tuoi dati e da cosa vuoi ottenere).

A presto.

Andrea


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Ing. Salvatore Fiandaca
mobile.:+39 327.493.8955
m: pigrecoinfinito@gmail.com
C.F.: FNDSVT71E29Z103G
P.IVA: 06597870820
membro QGIS Italia - http://qgis.it/
socio GFOSS.it - http://gfoss.it/
member OSGeo - https://www.osgeo.org/member/fiandaca/
blog:**** https://pigrecoinfinito.com/
FB: Co-admin - https://www.facebook.com/qgis.it/****
TW: ****https://twitter.com/totofiandaca

43°51’0.54"N 10°34’27.62"E - EPSG:4326

“Se la conoscenza deve essere aperta a tutti,
perchè mai limitarne l’accesso?”
R. Stallman

Questo documento, allegati inclusi, contiene informazioni di proprietà di FIANDACA SALVATORE e deve essere utilizzato esclusivamente dal destinatario in relazione alle finalità per le quali è stato ricevuto. E’ vietata qualsiasi forma di riproduzione o divulgazione senza l’esplicito consenso di FIANDACA SALVATORE. Qualora fosse stato ricevuto per errore si prega di informare tempestivamente il mittente e distruggere la copia in proprio possesso.


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Giacomo se lavori molto con i dati alfanumerici, le espressioni regolari ti semplificherebbe ti molto la vita, inoltre è un linguaggio valido ovunque, lo trovi ovunque:
QGIS; LibreCalc, gsheet, excel, ecccc

Scusami per la brevità, ti sto scrivendo dal cellulare

Il ven 14 ott 2022, 09:54 Giacomo Fontanelli <giacomofontanelli76@gmail.com> ha scritto:

Grazie Totò

a me le regexp paiono i codici per dialogare con gli extraterrestri :slight_smile:

Comunque String_to_array ha funzionato e sono contento.

A presto

Giacomo

Il giorno gio 13 ott 2022 alle ore 19:16 Marco Spaziani <spaziani.marco@gmail.com> ha scritto:

…che tsunami di informazioni!!! …ora ce ne è abbastanza da studiare e fare prove per un mese …Grazie !!!

Il giorno mer 12 ott 2022 alle ore 20:01 Totò Fiandaca <pigrecoinfinito@gmail.com> ha scritto:

La funzione String_to_array è una bella funzione, molto utile, ma per questi tipi di problemi uso le regex (espressioni regolari) che permettono di risolvere una più vasta casistica.

Supponiamo di avere la seguente tabella degli attributi:

id,testo
1,CIAO_Ciao
2,ciao_arrivederci
3,123 ciao_arrivederci 123
4,_ciao_cucu
5,1ciao_2ciao 3ciao_4ciao 123

l’espressione che utilizzerei:

regexp_replace(“testo”,‘(.+)_(.+)’,‘\1’)

dove:

‘(.+)(.+)’ : divide il testo in due gruppi separati dal '’;

‘\1’ : restituisce il primo gruppo; per il secondo gruppo utilizzare ‘\2’

https://docs.qgis.org/3.22/en/docs/user_manual/expressions/functions_list.html#regexp-replace

saluti

Il giorno mer 12 ott 2022 alle ore 16:37 Andrea Giudiceandrea via QGIS-it-user <qgis-it-user@lists.osgeo.org> ha scritto:

Il 12/10/2022 14:53, Giacomo Fontanelli ha scritto:

array_first((string_to_array((“Name”), ‘_’, ’ ')))

Ciao Giacomo,
ottimo, anche se c’è qualche parentesi che può essere evitata:

array_first(string_to_array(“Name”, ‘_’, ’ '))

inoltre forse l’ultimo parametro usato in string_to_array non è
necessario (ma dipende dai tuoi dati e da cosa vuoi ottenere).

A presto.

Andrea


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Ing. Salvatore Fiandaca
mobile.:+39 327.493.8955
m: pigrecoinfinito@gmail.com
C.F.: FNDSVT71E29Z103G
P.IVA: 06597870820
membro QGIS Italia - http://qgis.it/
socio GFOSS.it - http://gfoss.it/
member OSGeo - https://www.osgeo.org/member/fiandaca/
blog:**** https://pigrecoinfinito.com/
FB: Co-admin - https://www.facebook.com/qgis.it/****
TW: ****https://twitter.com/totofiandaca

43°51’0.54"N 10°34’27.62"E - EPSG:4326

“Se la conoscenza deve essere aperta a tutti,
perchè mai limitarne l’accesso?”
R. Stallman

Questo documento, allegati inclusi, contiene informazioni di proprietà di FIANDACA SALVATORE e deve essere utilizzato esclusivamente dal destinatario in relazione alle finalità per le quali è stato ricevuto. E’ vietata qualsiasi forma di riproduzione o divulgazione senza l’esplicito consenso di FIANDACA SALVATORE. Qualora fosse stato ricevuto per errore si prega di informare tempestivamente il mittente e distruggere la copia in proprio possesso.


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Hai ragione Totò. Grazie

Il giorno ven 14 ott 2022 alle ore 09:59 Totò Fiandaca <pigrecoinfinito@gmail.com> ha scritto:

Giacomo se lavori molto con i dati alfanumerici, le espressioni regolari ti semplificherebbe ti molto la vita, inoltre è un linguaggio valido ovunque, lo trovi ovunque:
QGIS; LibreCalc, gsheet, excel, ecccc

Scusami per la brevità, ti sto scrivendo dal cellulare

Il ven 14 ott 2022, 09:54 Giacomo Fontanelli <giacomofontanelli76@gmail.com> ha scritto:

Grazie Totò

a me le regexp paiono i codici per dialogare con gli extraterrestri :slight_smile:

Comunque String_to_array ha funzionato e sono contento.

A presto

Giacomo

Il giorno gio 13 ott 2022 alle ore 19:16 Marco Spaziani <spaziani.marco@gmail.com> ha scritto:

…che tsunami di informazioni!!! …ora ce ne è abbastanza da studiare e fare prove per un mese …Grazie !!!

Il giorno mer 12 ott 2022 alle ore 20:01 Totò Fiandaca <pigrecoinfinito@gmail.com> ha scritto:

La funzione String_to_array è una bella funzione, molto utile, ma per questi tipi di problemi uso le regex (espressioni regolari) che permettono di risolvere una più vasta casistica.

Supponiamo di avere la seguente tabella degli attributi:

id,testo
1,CIAO_Ciao
2,ciao_arrivederci
3,123 ciao_arrivederci 123
4,_ciao_cucu
5,1ciao_2ciao 3ciao_4ciao 123

l’espressione che utilizzerei:

regexp_replace(“testo”,‘(.+)_(.+)’,‘\1’)

dove:

‘(.+)(.+)’ : divide il testo in due gruppi separati dal '’;

‘\1’ : restituisce il primo gruppo; per il secondo gruppo utilizzare ‘\2’

https://docs.qgis.org/3.22/en/docs/user_manual/expressions/functions_list.html#regexp-replace

saluti

Il giorno mer 12 ott 2022 alle ore 16:37 Andrea Giudiceandrea via QGIS-it-user <qgis-it-user@lists.osgeo.org> ha scritto:

Il 12/10/2022 14:53, Giacomo Fontanelli ha scritto:

array_first((string_to_array((“Name”), ‘_’, ’ ')))

Ciao Giacomo,
ottimo, anche se c’è qualche parentesi che può essere evitata:

array_first(string_to_array(“Name”, ‘_’, ’ '))

inoltre forse l’ultimo parametro usato in string_to_array non è
necessario (ma dipende dai tuoi dati e da cosa vuoi ottenere).

A presto.

Andrea


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Ing. Salvatore Fiandaca
mobile.:+39 327.493.8955
m: pigrecoinfinito@gmail.com
C.F.: FNDSVT71E29Z103G
P.IVA: 06597870820
membro QGIS Italia - http://qgis.it/
socio GFOSS.it - http://gfoss.it/
member OSGeo - https://www.osgeo.org/member/fiandaca/
blog:**** https://pigrecoinfinito.com/
FB: Co-admin - https://www.facebook.com/qgis.it/****
TW: ****https://twitter.com/totofiandaca

43°51’0.54"N 10°34’27.62"E - EPSG:4326

“Se la conoscenza deve essere aperta a tutti,
perchè mai limitarne l’accesso?”
R. Stallman

Questo documento, allegati inclusi, contiene informazioni di proprietà di FIANDACA SALVATORE e deve essere utilizzato esclusivamente dal destinatario in relazione alle finalità per le quali è stato ricevuto. E’ vietata qualsiasi forma di riproduzione o divulgazione senza l’esplicito consenso di FIANDACA SALVATORE. Qualora fosse stato ricevuto per errore si prega di informare tempestivamente il mittente e distruggere la copia in proprio possesso.


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user