wie man führende Nullen aus alphanumerischem Text in der mysql-Funktion trimmt

Welche mysql-Funktionen gibt es (falls vorhanden), um führende Nullen aus einem alphanumerischen Textfeld zu schneiden?

Feld mit dem Wert "00345ABC" müsste "345ABC" zurückgeben.

0

7 Antworten

Mit TRIM können Sie die nachfolgenden, führenden oder alle Zeichen entfernen. Einige Beispiele zur Verwendung der TRIM-Funktion in MySQL:

select trim(myfield) from (select '   test' myfield) t;
>> 'test'
select trim('0' from myfield) from (select '000000123000' myfield) t;
>> '123'
select trim(both '0' from myfield) from (select '000000123000' myfield) t;
>> '123'
select trim(leading '0' from myfield) from (select '000000123000' myfield) t;
>> '123000'
select trim(trailing '0' from myfield) from (select '000000123000' myfield) t;
>> '000000123'

Wenn Sie nur eine bestimmte Anzahl von führenden/nachlaufenden Zeichen entfernen möchten, schauen Sie in die LINKS/RECHTS-Funktionen, mit der Kombination der LEN- und INSTR-Funktionen

0
hinzugefügt

Wenn Sie eine ganze Spalte einer Tabelle aktualisieren möchten, können Sie verwenden

USE database_name;
UPDATE `table_name` SET `field` = TRIM(LEADING '0' FROM `field`) WHERE `field` LIKE '0%';
0
hinzugefügt

Sie suchen nach der Funktion trim() .

Okay, hier ist dein Beispiel

SELECT TRIM(LEADING '0' FROM myfield) FROM table
0
hinzugefügt
Ist das auch für mehrere Nullen?
hinzugefügt der Autor Peter, Quelle
++ Speziell TRIM (LEADING '0' VON '000345ANB095')
hinzugefügt der Autor Tom Ritter, Quelle
Es wird den Wert leer lassen, wenn es bereits '0000' ist.
hinzugefügt der Autor arslion, Quelle

Ich glaube, Sie wären am besten damit:

SELECT TRIM(LEADING '0' FROM myField)
0
hinzugefügt

Entfernen Sie einfach den Abstand zwischen TRIM (LEADING benutzen

SELECT * FROM my_table WHERE TRIM(LEADING '0' FROM accountid ) = '00322994' 
0
hinzugefügt
Funktioniert das mit mehreren Nullen?
hinzugefügt der Autor Peter, Quelle

SPITZE:

Wenn Ihre Werte rein numerisch sind, können Sie auch einfaches Casting verwenden, z.

SELECT * FROM my_table WHERE accountid = '00322994' * 1

wird tatsächlich in konvertieren

SELECT * FROM my_table WHERE accountid = 322994

Das ist in vielen Fällen eine ausreichende Lösung und ich glaube auch, dass die Leistung effektiver ist. (Warnung - Werttyp wechselt von STRING zu INT/FLOAT).

In einigen Situationen könnte die Verwendung einer Casting-Funktion auch ein Weg sein:

http://dev.mysql.com/doc/refman/5.0/en/cast- functions.html

0
hinzugefügt
Ich denke, + 0 ist eine gebräuchlichere Methode für die Umwandlung in einen int als * 1
hinzugefügt der Autor mpen, Quelle
Dies ist sehr nützlich, wenn der Wert wie '000000' ist.
hinzugefügt der Autor Septian Primadewa, Quelle

SELECT TRIM (LEADING '0' VON Spaltenname ) FROM Tabellenname ; Dies funktioniert auch korrekt

0
hinzugefügt