2017-01-31 4 views
1

Meine DB ist ein wenig seltsam und ich fand heraus, dass coin_id von einigen Produkten hat ein "Leerzeichen" als ihr erster Buchstabe. Also statt "123456" ist es "123456". Ich versuche alle coin_id zu finden, die mit einem "Leerzeichen" beginnen und dann die Leerzeichen entfernen.Versuchen, alle Feld beginnend mit Platz

+1

'UPDATE table_name SET coin_id = LTRIM (coin_id)' – AbraCadaver

+0

@AbraCadaver Post als Antwort, so kann diese Frage – davejal

Antwort

3

Keine Notwendigkeit, sie selbst zu finden, schneidet sie nur in einer UPDATE Abfrage. Verwenden Sie LTRIM oder nur TRIM wenn es sollte nicht am Anfang oder Ende Plätze:

UPDATE table_name SET coin_id = LTRIM(coin_id) 

Als Dudu Markovitz Punkte aus, vor allem wenn es einige von vielen zu aktualisieren, können Sie sie finden und aktualisieren, um sie für die möglicherweise eine bessere Leistung:

UPDATE table_name SET coin_id = LTRIM(coin_id) WHERE coin_id LIKE ' %' 

Oder TRIM:

UPDATE table_name SET coin_id = TRIM(coin_id) 
     WHERE coin_id LIKE ' %' OR coin_id LIKE '% ' 
+0

Dies funktioniert dank – Ron

+0

Obwohl logisch äquivalent, Leistung weise Es ist keine gute Idee, den gesamten Satz zu aktualisieren, wenn Sie nur einen Teil davon aktualisieren müssen. –

0

Wie wäre es damit? Entfernen ein Zeichen aus den Spalten mit einem Leerzeichen beginnen

UPDATE table 
    SET coin_id = RIGHT(coin_id,LENGTH(coin_id)-1) 
    WHERE LEFT(coin_id,1) = ' '; 
+0

geschlossen werden, und wenn es mehr als 1 Raum? –

+0

Ersetzen Sie 'RECHT (LÄNGE (coin_id) -1)' mit 'ltrim (coin_id)': D wusste nicht über die integrierte 'ltrim' oder' trim' bis jetzt – Antony

0

Erstens, warum ist eine ID, die von di besteht gits als String gespeichert? Vielleicht ist der "12345" nicht wirklich ein repräsentativer Wert.

Ich würde vorschlagen, dass Sie verwenden like:

update t 
    set coin_id = trim(coin_id) 
    where coin_id like ' %'; 

Hinweise:

  • like ' %' ermöglicht es dem Optimierer einen Index für t(coin_id) zu verwenden.
  • Die Abfrage verwendet trim(). Nach Leerzeichen könnte am Ende auch ein Problem sein.
  • Wenn der Wert Ziffern ist, dann sollte es als eine Nummer irgendeiner Art gespeichert werden.
+0

@DuduMarkovitz. . . Das ist komisch. Ich weiß nicht einmal, was ich gedacht habe. –

1

Update hat Auswirkungen auf die Leistung.
Aktualisieren Sie nur das, was Sie aktualisieren müssen.

update t 
set coin_id = ltrim(coin_id) 
where coin_id like ' %' 
Verwandte Themen