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