webForumDet fria alternativet

Ta bort radbrytning ur MySQL

Databaser & SQL

7 svar · 867 visningar · startad av foks

Medlem sedan juli 200280 inlägg
Frågan#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?

Medlem sedan juni 200032 967 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 '%
'
Medlem 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.

Medlem sedan juni 20006 031 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().

Medlem 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.

Medlem sedan juni 20006 031 inlägg
#6

Flyttas från PHP

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

Medlem 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.

Medlem sedan juli 200280 inlägg
#8

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

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)