2012-04-02 3 views
1

Wie würde ich ein Leerzeichen in ein Wort einfügen mit einer MySQL-Zeichenfolge Funktion?Wie füge ich ein Leerzeichen in ein Wort mit einer MySQL-String-Funktion ein?

Ich habe ein GPS-Koordinate in meiner GPS-Spalte als solche

gespeichert

S2829.080,E2850.683

ich die Ausgabe sein möchte:

S28 29.080,E28 50.683

Jede Beratung sehr geschätzt

.

Dank

LÖSUNG UPDATE:

CREATE FUNCTION SPLIT_STR(
    x VARCHAR(255), 
    delim VARCHAR(12), 
    pos INT 
) 
RETURNS VARCHAR(255) 
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), 
     LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), 
     delim, ''); 

SELECT CONCAT_WS(' ', LEFT(SPLIT_STR("S2829.080,E2850.683",',',1),3),MID(SPLIT_STR("S2829.080,E2850.683",',',1),4,LENGTH(SPLIT_STR("S2829.080,E2850.683",',',1)))) AS 
latitude; 

SELECT CONCAT_WS(' ', LEFT(SPLIT_STR("S2829.080,E2850.683",',',1),3),MID(SPLIT_STR("S2829.080,E2850.683",',',2),4,LENGTH(SPLIT_STR("S2829.080,E2850.683",',',2)))) AS 
longitude; 

ich seit "Normalized" meine Datenbank und die JS-Form geändert durch Zugabe von 2 Spalten für Längen- und Breitengrad.

Vielen Dank an alle

+0

Ist das Muster immer gleich: 3 Zeichen, Leerzeichen, Zahl, Komma, 3 Zeichen, Leerzeichen, Zahl? –

+0

Hallo Michael, ja, das Muster ist immer gleich. Die JS-App hat eine Regex, um nach diesem Muster zu suchen, aber es wurde etwas spät implementiert. /A-Z{1}[0-9]{2}\s[0-9]{2}\.[0-9]{3}/ – QCar

Antwort

1

unten Versuchen:

Verwendung concat(), left(), mid() mysql Funktionen:

update table set columnname=concat(LEFT(columnname,3),' ',MID(columnname,4,LENGTH(columnname))) 

Ihren Raum Angenommen wird immer in Ihrer Spalte Wert nach 3 char

BTW funktioniert nicht, wenn Sie kommagetrennte Werte unter einer einzelnen Spalte speichern. und das ist der Nachteil eines solchen Tabellenschemas.

Sie sollten Ihre Datenbank

Normalize Sie sollten Eltern-Kind-Tabelle in-anstelle von comma separated values ​​

+0

Danke für deine Hilfe, ich habe meine Frage mit der Lösung aktualisiert. – QCar

0

machen Wenn Sie teilen hier die ersten 3 Zeichen und der Rest ein Weg ist,

SELECT CONCAT_WS(" ", LEFT(columname 3) , SUBSTRING(columnname FROM 4)) FROM tablename