3 votos

Dividir cadena con número de casa en QGIS Field Calculator

Tengo un campo de cadena con housenumber que contiene valores como:

número de vivienda

5

12 a

15 b

18 c

¿Cuáles son las expresiones correctas para que la calculadora de campo escriba sólo el número en "field1" y sólo la cadena en "field2" :

campo1

campo2

5

NULL

12

a

15

b

18

c

Supongo que expresiones regulares. Pero, ¿cómo implementarlo?

enter image description here

7voto

Xavier Nodet Puntos 2498

Extraer información con una expresión regular es siempre un poco complicado sin tener todos los datos, y puede llevar a resultados inesperados. Por ejemplo, ¿qué pasaría si el campo tiene datos como 'a 22 a' .

Teniendo eso en cuenta y con los datos de ejemplo que aportas puedes probar con estas dos expresiones regulares.

# For field1
regexp_substr("hausnummer", '[0-9]*')

# For field2
regexp_substr("hausnummer", '[[:alpha:]]+')

enter image description here

BTW hay un maravillosa herramienta en línea que puede utilizar para probar expresiones regulares para diferentes motores/idiomas

5voto

mathieu Puntos 53
  • Buscar todos consecutivo números (primeras ocurrencias):

    regexp_substr( "hausnummer", '(\\d+)' )
  • Buscar todos consecutivo caracteres (primeras ocurrencias, en el intervalo a - z & A - Z ):

    regexp_substr( "hausnummer", '([a-zA-Z]+)' )

1voto

mostafaxx Puntos 1

Yo usaría

f1 = left("hausnummer",strpos("hausnummer",' ')-1)

f2 = right("hausnummer",length("hausnummer")-strpos("hausnummer",' '))

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X