Ich habe eine Tabelle mit zwei Feldern (Länder und ISO-Codes):
Table1
field1 - e.g. 'Afghanistan' (without quotes)
field2 - e.g. 'AF'(without quotes)
In einigen Zeilen enthält das zweite Feld am Anfang und / oder Ende Leerzeichen, was sich auf Abfragen auswirkt.
Table1
field1 - e.g. 'Afghanistan' (without quotes)
field2 - e.g. ' AF' (without quotes but with that space in front)
Gibt es eine Möglichkeit (in SQL), durch die Tabelle zu gehen und das Leerzeichen in Feld2 zu finden / zu ersetzen?
Antworten:
Du suchst TRIM .
quelle
Eine allgemeine Antwort, die ich aus Ihren Antworten und anderen Links zusammengestellt habe und die für mich funktioniert hat und die ich in einem Kommentar geschrieben habe, lautet:
etc.
Da trim () nicht alle Leerzeichen entfernt, ist es besser, alle gewünschten Leerzeichen zu ersetzen und sie dann zu kürzen.
Hoffe ich konnte dir helfen meine Antwort zu teilen :)
quelle
Bitte verstehen Sie den Anwendungsfall, bevor Sie diese Lösung verwenden:
Das Trimmen funktioniert bei der Auswahlabfrage nicht
Das funktioniert
Während dies nicht tut
quelle
TRIM()
funktioniert gut für mich in einerSELECT
Aussage, ich bin wirklich neugierig, warum diese Antwort so viele positive Stimmen hat. Verwenden Sie MySQL? Welche Version?SELECT CONCAT('"', TRIM(" hello world "), '"') AS `trimmed value` FROM DUAL
die gewünschte Ausgabe an"hello world"
. Während die Ersetzungsvariante das Leerzeichen als Worttrennzeichen gefährlich entfernt:SELECT CONCAT('"', REPLACE(" hello world ", ' ', '')) AS `replaced value` FROM DUAL
gibt die unerwünschte Ausgabe"helloworld"
Um klar zu sein, entfernt TRIM standardmäßig nur Leerzeichen (nicht alle Leerzeichen). Hier ist das Dokument: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_trim
quelle
Es scheint, dass keine der aktuellen Antworten tatsächlich 100% des Leerzeichens vom Anfang und Ende einer Zeichenfolge entfernt.
Wie in anderen Beiträgen erwähnt, entfernt die Standardeinstellung
TRIM
nur Leerzeichen - keine Tabulatoren, Formfeeds usw. Eine Kombination vonTRIM
s, die andere Leerzeichen angeben, kann eine begrenzte Verbesserung bewirken, zTRIM(BOTH '\r' FROM TRIM(BOTH '\n' FROM TRIM(BOTH '\f' FROM TRIM(BOTH '\t' FROM TRIM(txt)))))
. Das Problem bei diesem Ansatz ist jedoch, dass nur ein einziges Zeichen für ein bestimmtes Zeichen angegeben werden kannTRIM
und diese Zeichen nur am Anfang und am Ende entfernt werden. Wenn die zu schneidende Zeichenfolge so etwas wie\t \t \t \t
(dh alternative Leerzeichen und Tabulatorzeichen) ist,TRIM
wären mehr s erforderlich - und im allgemeinen Fall könnte dies unbegrenzt weitergehen.Für eine einfache Lösung sollte es möglich sein, eine einfache benutzerdefinierte Funktion (User Defined Function, UDF) zu schreiben, um die Aufgabe zu erledigen, indem die Zeichen am Anfang und Ende einer Zeichenfolge durchlaufen werden. Aber ich werde das nicht tun ... da ich bereits einen etwas schwereren Ersatz für reguläre Ausdrücke geschrieben habe, der auch die Arbeit erledigen kann - und aus anderen Gründen nützlich sein kann, wie in diesem Blog-Beitrag beschrieben .
Demo
Online-Demo erneut testen . Insbesondere zeigt die letzte Zeile die anderen fehlgeschlagenen Methoden, aber die erfolgreiche Methode für reguläre Ausdrücke.
Funktion :
Verwendung:
quelle
Diese Anweisung entfernt und aktualisiert den Feldinhalt Ihrer Datenbank
So entfernen Sie Leerzeichen auf der linken Seite des Feldwerts
UPDATE-Tabelle SET field1 = LTRIM (field1);
Ex. UPDATE-Mitglied SET firstName = LTRIM (firstName);
So entfernen Sie Leerzeichen auf der rechten Seite des Feldwerts
UPDATE-Tabelle SETfield1 = RTRIM (Feld1);
Ex. UPDATE-Mitglied SET firstName = RTRIM (firstName);
quelle
Ich musste die Werte in einer Primärschlüsselspalte mit Vor- und Nachnamen kürzen, daher wollte ich nicht den gesamten Leerraum kürzen, da dadurch der Abstand zwischen Vor- und Nachname entfernt würde, den ich beibehalten musste. Was für mich funktioniert hat war ...
oder
oder
Beachten Sie, dass die erste Instanz von FIELD in einfachen Anführungszeichen steht, die zweite jedoch überhaupt nicht in Anführungszeichen. Ich musste es so machen oder es gab mir einen Syntaxfehler, der besagte, dass es sich um einen doppelten Primärschlüssel handelte, wenn ich beide in Anführungszeichen hatte.
quelle
Wenn Sie in ausgewählten Abfragen Trimmen verwenden müssen, können Sie auch reguläre Ausdrücke verwenden
Zeilen mit einem Feld wie 'Abfragezeichenfolge' zurückgeben
quelle
Sie können ltrim oder rtrim verwenden, um Leerzeichen für rechts oder links oder eine Zeichenfolge zu bereinigen.
quelle
Sie können das folgende SQL verwenden: UPDATE
TABLE
SETColumn
= replace (Column, '', '')quelle
Ich weiß, dass es bereits akzeptiert wurde, aber für diejenigen wie mich, die nach "ALLE Leerzeichen entfernen" suchen (nicht nur am Anfang und Ende der Zeichenfolge):
EDIT 20.06.2019: Ja, das ist nicht gut. Die Funktion gibt den Teil der Zeichenfolge zurück, seit "als der Zeichenraum zum ersten Mal aufgetreten ist". Wenn Sie dies sagen, entfernen Sie die führenden und nachfolgenden Leerzeichen und geben das erste Wort zurück:
quelle