webForumDet fria alternativet

Ta bort radbrytning ur MySQL

7 svar · 865 visningar · startad av foks

foksMedlem sedan juli 200280 inlägg
#1

Jag har ett script som lägger in ord i en mysql-databas (kolumntypen varchar). Allt var frid och fröjd tills jag idag upptäckte att ett antal fält fått en radbrytning direkt efter ordet. Scriptet är antagligen lätt att fixa, men frågan är hur jag nu tar bort de radbrytningar som finns med. På något sätt vill jag köra en sql-fråga som ser ut ungefär så här:
SELECT * FROM ordlista WHERE ord LIKE '%\n'

Men \n fungerar inte i mysql-frågor. Någon som vet hur man ska göra?

@ndersMedlem sedan juni 200032 969 inlägg
#2

Frågor om SQL passar grymt mycket bättre i SQL-forumet, men jag hade ändå försökt mig på något sånt härnt:

SELECT * FROM ordlista WHERE ord LIKE '%
'
foksMedlem sedan juli 200280 inlägg
#3

Blind som jag är hittade jag inte något SQL-forum, nu när jag vet att det finns lyckades jag hitta det. :)
Tyvärr gav din sql-fråga inte några rader alls.

PeddaMedlem sedan juni 20006 032 inlägg
#4

Har du något fel när du lägger till i databasen som gör att läggs till en radbrytning efteråt eller är det om användarna har gjort en radbrytning innan?
Jag kör alltid trim() innan jag lägger in i databasen för att ta bort alla whitespaces i början och slutet.
Annars så kan du ju ta bort radbrytningen innan du skriver ut resultatet med trim() eller rtrim().

foksMedlem sedan juli 200280 inlägg
#5

Det är jag som hade något fel när de lades till, har ändrat om en del efter att de lades till så jag kan inte säga exakt hur det blev fel.
Jag kör unique som index i databasen för att inte få dubletter så därför vill jag få bort radbrytningarna helt istället för att ordna till det när jag hämtar data.

PeddaMedlem sedan juni 20006 032 inlägg
#6

Flyttas från PHP

Då får vi hoppas att du kan få hjälp i SQL forumet istället. :)

GislavedMedlem sedan nov. 20041 740 inlägg
#7

Har du provat med dubbla backslashes innan n?
SELECT * FROM ordlista WHERE ord LIKE '%\\n'

Du kan ju hämta alla poster, loopa igenom dem med PHP och ta bort eventuella radbrytningar för att sedan spara posterna igen.

<? 
$res = mysql_query("SELECT * FROM ordlista");
while($row = mysql_fetch_array($res))
{
   if($row['ord'] != trim($row['ord']))
   {
      mysql_query("UPDATE ordlista set ord = '" . trim($row['ord']) . "' WHERE id = $row[id]");
   }
}
?>

.. eller något i den stilen.

foksMedlem sedan juli 200280 inlägg
#8

Jag körde på Gislaveds metod att köra genom hela tabellen, tack för hjälpen!

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)