Avatar billede ziz Nybegynder
27. april 2002 - 16:23 Der er 9 kommentarer og
1 løsning

Slette specielle data'er

Hej jeg har nogle data'er som skal slettes, men hvad er kommandoen hvis man kun vil slette f.eks.:
Sådan ser min tabel ud:
Id: Navn: Info:

Så skal den kun slette alle data'er som hedder noget med "SJOV" i info. Men dog kun med navnet "test". Altså slette alle data'er der hedder "SJOV" og har oplysninger i navn: test
Avatar billede invisibleman Nybegynder
27. april 2002 - 16:25 #1
DELETE FROM tabel WHERE navn='test' AND info LIKE '%sjov%'

det vil slette alle poster hvor navn = "test" og ordet "sjov" findes i feltet info.
Avatar billede ziz Nybegynder
27. april 2002 - 16:27 #2
okay betyder LIKE '%sjov%' ikke at hvis der f.eks. er 1sjov eller 2sjov så blver de også slettet..?? Hvad nu hvis jeg fjerner %..??
Avatar billede kimiwan Nybegynder
27. april 2002 - 16:30 #3
% er wildcard

%sjov%  svarer til bl.a. sjov, sjover, asjov, asjover.
%sjov  svarer til bl.a. sjov, asjov - men *ikke* til sjover og asjover
sjov%  svarer til bl.a. sjov, sjover - men *ikke* til asjov og asjover

håber, det gi'r mening.
Avatar billede Slettet bruger
27. april 2002 - 16:31 #4
poster:

hest
hestene
fest
festerne


LIKE '%est%' //returnerer hest, hestene, fest, festerne
LIKE 'est% //returnerer ikke noget, da ingen af ordene starter med est
LIKE '%est' //returnerer hest, hestene, fest festerne
LIKE 'est' //returnerer ikke noget da ingen af ordene udelukkende indeholder est

Håber det hjalp lidt på forståelsen
Avatar billede ziz Nybegynder
27. april 2002 - 16:32 #5
Ja.. :-)
Kan dette så bruges:

<?
include("chat_mysql_con.php");
$con = mysql_query("SELECT COUNT(*) AS hits FROM tb_things WHERE t_info = 'Reklame' GROUP BY t_owner ORDER BY hits DESC LIMIT 3");
while ($data = mysql_fetch_row($con)) echo $data[0];

$con2 = mysql_query("DELETE FROM tb_things WHERE t_owner='0' AND t_info LIKE '%Reklame%'");
while ($data1 = mysql_fetch_row($con2)) echo $data1[0];
?>


Resultat:
1000413327
Warning: Supplied argument is not a valid MySQL result resource in /web/www.skyskraber.dk/www/Chat/test.php on line 7
Avatar billede invisibleman Nybegynder
27. april 2002 - 16:33 #6
ziz: Du kan evt. skrive: '% sjov %' .. altså med mellemrum .. så vil den kun fjerne den hvis info indeholder " sjov " (altså ordet sjov).

kimiwan: Ikke helt korrekt.

'%sjov' vil gøre at "sjov" *skal* være de sidste i strengen, men 'sjov%' gør at "sjov" SKAL være det første ...
Avatar billede invisibleman Nybegynder
27. april 2002 - 16:34 #7
ziz: Et DELETE statement returnerer ingen records jo.

$con2 = mysql_query("DELETE FROM tb_things WHERE t_owner='0' AND t_info LIKE '%Reklame%'");
while ($data1 = mysql_fetch_row($con2)) echo $data1[0];

skal være:

mysql_query("DELETE FROM tb_things WHERE t_owner='0' AND t_info LIKE '%Reklame%'");
Avatar billede kimiwan Nybegynder
27. april 2002 - 16:37 #8
invisibleman: korrekt - jeg fik måske ikke udtrykt mig helt klart nok i og med jeg kun brugte et enkelt ord i mine eksempler.
Avatar billede tipsen Nybegynder
27. april 2002 - 18:24 #9
el_barto:
LIKE '%est%' //returnerer hest, hestene, fest, festerne
LIKE '%est' //returnerer hest, hestene, fest festerne

Enten er det forkert eller også behøver man aldrig bruge % i slutningen af en streng?
Avatar billede Slettet bruger
28. april 2002 - 14:55 #10
my bad...

LIKE '%est' //returnerer hest, fest

(for meget copy/paste)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester