Domanda

Ho una colonna denominata StreetAddress che contiene

<Street Number> <Street Name>

Ad esempio:

15 rue Gontier-Patin
4968 Hillcrest Circle

Come posso rimuovere i numeri da l'inizio della fila puramente in SQL?

È stato utile?

Soluzione

Che ne dite di qualcosa di simile - tagliare tutto fino al primo spazio nelle stringhe che iniziano con un numero

UPDATE mytable 
SET addresscol=SUBSTRING(addresscol, LOCATE(' ', addresscol)+1)
WHERE addresscol REGEXP '^[0-9]';

Altri suggerimenti

Questo è basato su @ Paolo Dixon sopra, ma è solo per la restituzione di risultati senza aggiornare i dati per cose come l'ordinamento:

SELECT IF(address REGEXP '^[0-9]', SUBSTRING(address, LOCATE(' ', address)+1), address) AS addrSort FROM table;

MySQL non ha regexp sostituire le funzioni in modo che dipende dai valori nella colonna. Se la stringa inizia sempre con un numero e poi uno spazio, lo si può fare con la query SQL Paul Dixon pubblicato (doh, lui era più veloce di me: D)

.

Se avete bisogno di espressioni regolari per risolverlo, bisogna farlo in codice di applicazione al di fuori del database.

Credo che questo dovrebbe fare il lavoro sulla base del fatto che ogni voce ha il suo indirizzo separato dal numero di casa da uno spazio (" ");

UPDATE table
SET streetaddress = MID(streetaddress, LOCATE(' ', streetaddress) + 1);

Ho provato questo e funziona benissimo.

È anche possibile utilizzare il seguente se si desidera estrarre il numero civico per una nuova colonna precedente per l'aggiornamento;

UPDATE table
SET housenumber = MID(streetaddress, 1, LOCATE(' ', streetaddress) - 1);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top