21. januar 2004 - 07:22Der er
24 kommentarer og 1 løsning
trim i MySQL
Hvorfor virker følgende ikke:
update compound set chemical_name = trim(chemical_name)
Den skulle gerne gøre at "name " blev til "name"..altså uden mellemrum tilsidst. MySQL siger at 3222 rækker matchede men at den ikke har ændret nogen... hvorfor??
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str) Returns the string str with all remstr prefixes and/or suffixes removed. If none of the specifiers BOTH, LEADING or TRAILING are given, BOTH is assumed. If remstr is not specified, spaces are removed:
mysql> SELECT TRIM(' bar '); -> 'bar' mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx'); -> 'barxxx' mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx'); -> 'bar' mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz'); -> 'barx'
This function is multi-byte safe.
Hvilken mysql version anvender du på hvilken platform ?
At mysql matcher 3222 records, betyder ikke at der reelt skete ændringer i disse 3222 rækker, men at den gik disse igennem. Du har sikkert 3222 rækker i din tabel
Der er tilfældigvis ikke en kontrolkarakter, ala en tab, newline eller andet der driller dig ?
Jeg kan ikke lige se at der skulle være nogle karakterer som skulle gøre at det ikke kunna lade sig gøre. Et typisk data kunne se således ud: "2',6'-DIMETHOXYACETOPHENONE ", og væk skal det sidste mellemrum gerne...
Der burde slet ikke være blanke til sidst i en varchar. Mysql skriver selv:
......VARCHAR(M) [BINARY] A variable-length string. Note: trailing spaces are removed when the value is stored (this differs from the ANSI SQL specification).
Så du skulle slet ikke have behov for at fjerne dem. Og derfor sker der heller ingenting ved den sql-sætning du skriver i spørgsmålet.
der er loaded data i databasen via en csv fil, og der er der blevet introduceret det famøse mellemrum. Fremover bliver data formateret i java inden det ligges i basen og derfor vil/bør/kan/må det ikke forekomme fremover, så der er tale om et once only...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.