infostabil > edb.internet.* > edb.internet.webdesign.serverside

Kurt G (29.01.2017, 15:02)
Hej.
Jeg har en tabel, hvor der er et felt af typen DATE. Feltet hedder
'udm', der står for udmeldt. Dette felt er en senere tilføjelse som
ønskes af kassereren!
Desuden er der et felt 'Udmeldt', som har et tal større end 0 for
rækkefølgen af udmeldingerne.

Jeg vil gerne liste nogle af posterne, som indeholder årstallet 2016,
dertil bruger jeg forespørgselen:

SELECT * FROM Medlemmer WHERE Udmeldt > 0 AND udm = LIKE '%2016%' ORDER
BY Udmeldt DESC

Uden "AND udm = LIKE '%2016%'" virker det OK.

Jeg kan selvfølgelig lave felter "udm" om til tre felter med hver deres
del af datoen, men er der ikke en anden løsning?
Jan Hansen (29.01.2017, 15:20)
Kurt G skrev Sun, 29 Jan 2017 14:02:34 +0100:

> SELECT * FROM Medlemmer WHERE Udmeldt > 0 AND udm = LIKE '%2016%' ORDER
> BY Udmeldt DESC


Prøv uden lighedstegnet,
SELECT * FROM Medlemmer WHERE Udmeldt > 0 AND udm LIKE '%2016%' ORDER BY Udmeldt DESC
Kurt G (01.02.2017, 17:32)
On 29-01-2017 14:20, Jan Hansen wrote:
> Kurt G skrev Sun, 29 Jan 2017 14:02:34 +0100:
>> SELECT * FROM Medlemmer WHERE Udmeldt > 0 AND udm = LIKE '%2016%' ORDER
>> BY Udmeldt DESC

> Prøv uden lighedstegnet,
> SELECT * FROM Medlemmer WHERE Udmeldt > 0 AND udm LIKE '%2016%' ORDER BY Udmeldt DESC

Tak, det vil jeg prøve. Men = var med i det eksempel, som jeg fandt på
nettet!
Martin Larsen (06.02.2017, 19:38)
Den 01-02-2017 kl. 16:32 skrev Kurt G:

> Men = var med i det eksempel, som jeg fandt på nettet!


Så er der fejl i eksemplet! Der skal ikke lighedstegn sammen med LIKE.
Kurt G (09.02.2017, 20:31)
On 06-02-2017 18:38, Martin Larsen wrote:
[..]
Jørn Andersen (27.04.2017, 00:49)
On Sun, 29 Jan 2017 14:02:34 +0100, Kurt G <kurt_g>
wrote:

>Hej.
>Jeg har en tabel, hvor der er et felt af typen DATE. Feltet hedder
>'udm', der står for udmeldt. Dette felt er en senere tilføjelse som
>ønskes af kassereren!
>Desuden er der et felt 'Udmeldt', som har et tal større end 0 for
>rækkefølgen af udmeldingerne.
>Jeg vil gerne liste nogle af posterne, som indeholder årstallet 2016,
>dertil bruger jeg forespørgselen:
>SELECT * FROM Medlemmer WHERE Udmeldt > 0 AND udm = LIKE '%2016%' ORDER
>BY Udmeldt DESC
>Uden "AND udm = LIKE '%2016%'" virker det OK.


Hvis udm er et dato-felt, som du skriver, så ville jeg bruge:

SELECT * FROM Medlemmer
WHERE Udmeldt > 0 AND YEAR(udm) = 2016
ORDER BY Udmeldt DESC

Det er noget rod at bruge tekst-funktioner (LIKE) til dato-felter.
Brug dato-funktioner til dato-felter.

Det er i øvrigt også langt hurtigere. LIKE – især et LIKE, der starter
med joker-tegn – er pr.definiton langsom.

RTFM:
[..]

Good luck,
Jørn
Kurt G (03.07.2017, 15:46)
On 27-04-2017 00:49, J?rn Andersen wrote:
[..]
> Det er i øvrigt også langt hurtigere. LIKE ? især et LIKE, der starter
> med joker-tegn ? er pr.definiton langsom.
> RTFM:
> [..]
>> Good luck,

> Jørn

Tak, Jørn
Lignende emner