Trim functie
in een Mysql kolom heb ik zowel links als rechts van de celinhoud meerdere spaties staan. nu dacht ik dat ik met de functie TRIM die spaties zou kunnen weg halen.
ik heb deze code gebruikt in PHPMyAdmin:
UPDATE trials set code = TRIM(code);
het resultaat is dat hij 0 rijen heeft ge-update. Weet iemand waar dat aan kan liggen?
select TRIM(code) from trials
of
select TRIM(code from trials)
SELECT code FROM trails TRIM('code')
of
SELECT code FROM trails SELECT TRIM(BOTH ' ' FROM 'code')
TRIM() verwijdert wel spaties maar geen carriage returns en line feeds, mogelijk ligt het daaraan. Probeer het eens met \r, \n en \r\n in REPLACE() — even aangenomen dat je die karakters niet nodig hebt, uiteraard.
@Ward, misschien is het even handig dat ik vermeld dat ik een beginner ben. ik weet niet wat die stukjes code doen. \n is spatie?
Wouter W op 10/10/2012 09:54:01:
@Chris, als ik deze code uitvoer in PHPMyadmin, krijg ik in beiden gevallen een syntax error
@Ward, misschien is het even handig dat ik vermeld dat ik een beginner ben. ik weet niet wat die stukjes code doen. \n is spatie?
@Ward, misschien is het even handig dat ik vermeld dat ik een beginner ben. ik weet niet wat die stukjes code doen. \n is spatie?
\n is newline
\t is tab
Sorry voor mijn waardeloze syntax ;) ik dacht alleen ff mee, ben helaas nu niet in staat om zelf voor je mee te testen!
no prob Chris, ben blij met alle hulp!
[spatie][spatie][regeleinde]
dan heb je achtereenvolgens drie strings (even tussen aanhalingstekens gezet):
' '
' '
'\r\n'
De twee spaties worden niet door TRIM() verwijderd, doordat het veld eindigt op de twee karakters carriage return (\r) en new line (\n) voor een regeleinde. Deze karakters kun je verwijderen met:
REPLACE(veld, '\n', '')
REPLACE(veld, '\r', '')
En inderdaad voor een tab ook \t:
REPLACE(veld, '\t', '')
Gewijzigd op 10/10/2012 10:22:30 door Ward van der Put
geweldig, heldere uitleg. hoe kan ik er achter komen wat voor karakter er in mijn databaseveld staat? want dan weet ik ook hoe ik het moet replacen, toch?
SELECT *
FROM trials
WHERE code LIKE '%\t%'
Dit kun je herhalen met \r en \n.
Quote:
geweldig, heldere uitleg. hoe kan ik er achter komen wat voor karakter er in mijn databaseveld staat? want dan weet ik ook hoe ik het moet replacen, toch?
Met de MySQL functie ascii() kan je eventueel zoeken welke ascii waarde je mee te maken hebt. SELECT code,ASCII(substr(code,1,1))as 'ascii value' ....
Gewijzigd op 10/10/2012 10:44:38 door John D
update trials set code = replace(code,'\t','');
Dit probleem is ontstaan doordat ik een Excel sheet had met data. In die sheet ben ik de insert regel gaan creeren en daarna uitgevoerd in PHPMyadmin. Hierdoor zijn de tabs erbij gekomen.
Als ik nog een vervolg vraag mag stellen, bestaat er een makkelijkere manier om een kolom of kolommen uit Excel makkelijk te inserten in een database?
Op het tabblad Import of Importeer van phpMyAdmin vind je opties voor het importeren van Excel-bestanden. Lukt het daarmee niet, dan kun je in Excel een CSV-bestand opslaan; als je aansluitend bij het importeren van CSV in phpMyAdmin de juiste scheidingstekens voor rijen en kolommen opgeeft, zitten ze niet meer in de weg in de data.
Bedankt, daar ga ik is mee stoeien!