/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
mySQL: Hente rækker hvor "felt" max
Fra : Thomas Løjmann Jørge~


Dato : 11-02-07 18:09

Hej,

Nogle som ved om det er muligt med mySQL at hente alle rækker i en
tabel, hvor et bestemt felt max. indeholder f.eks. 5 tegn?

--
Kind Regards,

Thomas Løjmann Jørgensen
Branteviksgatan 30
214 41 Malmö
Sweden

Cell: +45 60 81 04 04
Home: +45 36 99 04 20 / +46 (0)40-693 11 12

http://lojmann.dk - Personal Homepage
http://nerdlab.se - Development & Hosting
http://freelance4u.dk - CV and references

 
 
Mads Lie Jensen (11-02-2007)
Kommentar
Fra : Mads Lie Jensen


Dato : 11-02-07 20:33

On Sun, 11 Feb 2007 18:08:34 +0100, Thomas Løjmann Jørgensen
<lojmann@lojmann.dk> wrote:

>Nogle som ved om det er muligt med mySQL at hente alle rækker i en
>tabel, hvor et bestemt felt max. indeholder f.eks. 5 tegn?

F.eks:
SELECT * FROM tabel WHERE CHAR_LENGTH(felt) <= 5;
--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
Gartneriet - http://www.gartneriet.dk/

Thomas Løjmann Jørge~ (24-02-2007)
Kommentar
Fra : Thomas Løjmann Jørge~


Dato : 24-02-07 10:00

Mads Lie Jensen wrote:
> On Sun, 11 Feb 2007 18:08:34 +0100, Thomas Løjmann Jørgensen
> <lojmann@lojmann.dk> wrote:
>
>> Nogle som ved om det er muligt med mySQL at hente alle rækker i en
>> tabel, hvor et bestemt felt max. indeholder f.eks. 5 tegn?
>
> F.eks:
> SELECT * FROM tabel WHERE CHAR_LENGTH(felt) <= 5;

Den giver mig bare alle dem hvor mit felt er tomt, altså har nul tegn...
MySQL version 5.0.19 på Mac...

--
Kind Regards,

Thomas Løjmann Jørgensen
Branteviksgatan 30
214 41 Malmö
Sweden

Cell: +45 60 81 04 04
Home: +45 36 99 04 20 / +46 (0)40-693 11 12

http://lojmann.dk - Personal Homepage
http://nerdlab.se - Development & Hosting
http://freelance4u.dk - CV and references

Jens Gyldenkærne Cla~ (24-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 24-02-07 10:49

Thomas Løjmann Jørgensen skrev:

>> SELECT * FROM tabel WHERE CHAR_LENGTH(felt) <= 5;
>
> Den giver mig bare alle dem hvor mit felt er tomt, altså har
> nul tegn... MySQL version 5.0.19 på Mac...

Indeholder feltet NULL eller den tomme streng ('')? NULL-værdier
burde ikke komme med i forespørgslen.

Hvis du kun vil have positive længder op til 5, kan du bruge
CHAR_LENGTH(felt) BETWEEN 1 AND 5

--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information

Thomas Løjmann Jørge~ (26-02-2007)
Kommentar
Fra : Thomas Løjmann Jørge~


Dato : 26-02-07 14:37

Jens Gyldenkærne Clausen wrote:
> Thomas Løjmann Jørgensen skrev:
>
>>> SELECT * FROM tabel WHERE CHAR_LENGTH(felt) <= 5;
>> Den giver mig bare alle dem hvor mit felt er tomt, altså har
>> nul tegn... MySQL version 5.0.19 på Mac...
>
> Indeholder feltet NULL eller den tomme streng ('')? NULL-værdier
> burde ikke komme med i forespørgslen.
>
> Hvis du kun vil have positive længder op til 5, kan du bruge
> CHAR_LENGTH(felt) BETWEEN 1 AND 5
>
select * from domains where CHAR_LENGTH(domain) BETWEEN 1 AND 5

giver mig ingen resultater, skønt der er felter der indeholder fra 3
tegn og op efter...

--
Kind Regards,

Thomas Løjmann Jørgensen
Branteviksgatan 30
214 41 Malmö
Sweden

Cell: +45 60 81 04 04
Home: +45 36 99 04 20 / +46 (0)40-693 11 12

http://lojmann.dk - Personal Homepage
http://nerdlab.se - Development & Hosting
http://freelance4u.dk - CV and references

Jens Gyldenkærne Cla~ (26-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 26-02-07 19:09

Thomas Løjmann Jørgensen skrev:

> select * from domains where CHAR_LENGTH(domain) BETWEEN 1 AND
> 5
>
> giver mig ingen resultater, skønt der er felter der indeholder
> fra 3 tegn og op efter...

Hvilken felttype er domain?

Følgende script virker fint her (MySQL 5):

create table domains (
id int auto_increment primary key,
domain varchar(10) NULL
);

INSERT INTO domains (domain) values ('123');
INSERT INTO domains (domain) values ('123456');
INSERT INTO domains (domain) values ('1234');
INSERT INTO domains (domain) values ('123456789');
INSERT INTO domains (domain) values (NULL);
INSERT INTO domains (domain) values ('');

SELECT * FROM domains WHERE CHAR_LENGTH(domain) BETWEEN 1 AND 5
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Thomas Løjmann Jørge~ (26-02-2007)
Kommentar
Fra : Thomas Løjmann Jørge~


Dato : 26-02-07 21:19

Jens Gyldenkærne Clausen wrote:
> Thomas Løjmann Jørgensen skrev:
>
>> select * from domains where CHAR_LENGTH(domain) BETWEEN 1 AND
>> 5
>>
>> giver mig ingen resultater, skønt der er felter der indeholder
>> fra 3 tegn og op efter...
>
> Hvilken felttype er domain?
>
<snip>

> SELECT * FROM domains WHERE CHAR_LENGTH(domain) BETWEEN 1 AND 5

Hmm... Nu får jeg også resultater, men det er stadig sært.

SELECT * FROM domains WHERE CHAR_LENGTH(domain) BETWEEN 1 AND 5
giver f.eks. 5 resultater hvor der er 5 tegn i domain feltet, fint nok.

SELECT * FROM domains WHERE CHAR_LENGTH(domain) BETWEEN 5 AND 5

giver igen resultater...

SELECT * FROM domains WHERE CHAR_LENGTH(domain) BETWEEN 5 AND 6

giver fine resultater osv osv osv...

Måske er det bare mig der misfortår, men mellem 1 og 5 der returner 4
felter med hver 5 tegn i, bør da give sammen resultat som en der
returner resultater mellem 5 og 5, altså hvor det er præcist 5?

SELECT * FROM domains WHERE CHAR_LENGTH(domain) = 5

virker ikke, men det er måske heller ikke gyldig syntax? mySQL brokker
sig jo ikke...

--
Kind Regards,

Thomas Løjmann Jørgensen
Branteviksgatan 30
214 41 Malmö
Sweden

Cell: +45 60 81 04 04
Home: +45 36 99 04 20 / +46 (0)40-693 11 12

http://lojmann.dk - Personal Homepage
http://nerdlab.se - Development & Hosting
http://freelance4u.dk - CV and references

Mads Lie Jensen (26-02-2007)
Kommentar
Fra : Mads Lie Jensen


Dato : 26-02-07 21:54

On Mon, 26 Feb 2007 21:19:15 +0100, Thomas Løjmann Jørgensen
<lojmann@lojmann.dk> wrote:

>> SELECT * FROM domains WHERE CHAR_LENGTH(domain) BETWEEN 1 AND 5
>
>Hmm... Nu får jeg også resultater, men det er stadig sært.
>
>SELECT * FROM domains WHERE CHAR_LENGTH(domain) BETWEEN 1 AND 5
>giver f.eks. 5 resultater hvor der er 5 tegn i domain feltet, fint nok.
>
>SELECT * FROM domains WHERE CHAR_LENGTH(domain) BETWEEN 5 AND 5
>
>giver igen resultater...
>
>SELECT * FROM domains WHERE CHAR_LENGTH(domain) BETWEEN 5 AND 6
>
>giver fine resultater osv osv osv...

Kunne man forestille sig at der er blanktegn som driller? Spaces, tabs
eller lign.?

Hvis nu du kører en
SELECT domain, CHAR_LENGTH(domain) FROM domains;

Hvad viser den så?
Det kunne jo måske være at det du tror er på 3 tegn, rent faktisk er på
mere?

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
Gartneriet - http://www.gartneriet.dk/

Thomas Løjmann Jørge~ (26-02-2007)
Kommentar
Fra : Thomas Løjmann Jørge~


Dato : 26-02-07 22:03

Mads Lie Jensen wrote:
<snip>
>
> Kunne man forestille sig at der er blanktegn som driller? Spaces, tabs
> eller lign.?
>
> Hvis nu du kører en
> SELECT domain, CHAR_LENGTH(domain) FROM domains;

Jeg har trykket denne af: SELECT domain, CHAR_LENGTH(domain) FROM
domains where char_length(domain) between 1 and 6

og den giver de samme 4 resultater som før, f.eks. en række hvor domain
er "72.dk" altså 5 char, men den skriver at den er 6 char lang. Der er
ikke nogle mellemrum/white spaces... Det under mig vildt meget...

--
Kind Regards,

Thomas Løjmann Jørgensen
Branteviksgatan 30
214 41 Malmö
Sweden

Cell: +45 60 81 04 04
Home: +45 36 99 04 20 / +46 (0)40-693 11 12

http://lojmann.dk - Personal Homepage
http://nerdlab.se - Development & Hosting
http://freelance4u.dk - CV and references

Jens Gyldenkærne Cla~ (26-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 26-02-07 22:35

Thomas Løjmann Jørgensen skrev:

> Jeg har trykket denne af: SELECT domain, CHAR_LENGTH(domain)
> FROM domains where char_length(domain) between 1 and 6
>
> og den giver de samme 4 resultater som før, f.eks. en række
> hvor domain er "72.dk" altså 5 char, men den skriver at den er
> 6 char lang.

Prøv følgende:

SELECT CONCAT('"', domain ,'"') As quotedDomain,
CHAR_LENGTH(domain) as lenDom
FROM domains WHERE CHAR_LENGTH(domain) BETWEEN 1 AND 6

- så kan du se om der gemmer sig ekstra tegn.

> Der er ikke nogle mellemrum/white spaces...

Hvordan har du tjekket det? Har du tjekket for linjeskift?
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Thomas Løjmann Jørge~ (27-02-2007)
Kommentar
Fra : Thomas Løjmann Jørge~


Dato : 27-02-07 09:08

Jens Gyldenkærne Clausen wrote:
<snip>

> Prøv følgende:
>
> SELECT CONCAT('"', domain ,'"') As quotedDomain,
> CHAR_LENGTH(domain) as lenDom
> FROM domains WHERE CHAR_LENGTH(domain) BETWEEN 1 AND 6
>
> - så kan du se om der gemmer sig ekstra tegn.
>
>> Der er ikke nogle mellemrum/white spaces...
>
> Hvordan har du tjekket det? Har du tjekket for linjeskift?

Ha, der var skurken. Du har helt ret, der er jo linieskift - men det
kunne jeg bare ikke se i det jeg trak ud eller phpMyAdmin.
Nu giver alting mere mening, mange 1000 tak for Jeres hjælp :)

--
Kind Regards,

Thomas Løjmann Jørgensen
Branteviksgatan 30
214 41 Malmö
Sweden

Cell: +45 60 81 04 04
Home: +45 36 99 04 20 / +46 (0)40-693 11 12

http://lojmann.dk - Personal Homepage
http://nerdlab.se - Development & Hosting
http://freelance4u.dk - CV and references

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste