[MySQL] Decode(veld,veld)

Pagina: 1
Acties:

  • []InTeR[]
  • Registratie: Januari 2001
  • Laatst online: 31-12-2023
Ik heb een probleem met het decoden van velden.

Database:
code:
1
2
3
4
5
CREATE TABLE `gebruiker` (
`id` INT( 5 ) NOT NULL ,
`naam` BLOB NOT NULL ,
`pass` CHAR( 20 ) NOT NULL 
);


Query:
code:
1
Select decode(`naam`,`pass`) from `gebruiker` werkt dus niet.


Geeft de fout code:
code:
1
You have an error in your SQL syntax near 'pass`  )  FROM  `gebruiker`  LIMIT 0, 50' at line 1


Doe ik hier een std string, dan doet deze het wel, gebruik ik een veld uit z'n database gaat het fout. En dit heb ik wel nodig (o.a. zoeken).

Shit doesn't happen by it self, it's made by a arsehole.


Verwijderd

2e argument mag geen kolom zijn, maar moet een string bevatten?

Verwijderd

code:
1
SELECT naam, DECODE('pass', 'randomstring') FROM gebruiker LIMIT...

Zoiets :?

  • []InTeR[]
  • Registratie: Januari 2001
  • Laatst online: 31-12-2023
Verwijderd schreef op 14 January 2003 @ 10:40:
2e argument mag geen kolom zijn, maar moet een string bevatten?
Ik snap niet dat het 2e argument geen kolom mag zijn, aangezien dit bij vele andere functies wel kan. Ook staat dit nergens in de manual, hier staat dat het een string moet zijn. Wat ook staat bij de andere functies wie wel een kolom naam acepteren.

Shit doesn't happen by it self, it's made by a arsehole.


Verwijderd

Ik heb het hier even uitgeprobeerd... Ik heb twee willekeurige velden als argument meegegeven. Ik heb alleen deze
code:
1
'
quotes gebruikt, in plaats van
code:
1
`
. Misschien dat dat het is. MAar dan is het mij nog niet geheel duidelijk waarom je beide argumenten uit je db wilt halen.

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

gebruik van quotes:

code:
1
2
` (backtick) -> deze zet je om veldnamen heen
'  (normale enkele quote) -> deze zet je om strings eens


het is dus vrij logische dat het bij jou lukt wanneer je de normale quote gebruikt, er wordt dan namelijk niet de waarde uit het veld gebruikt maar de naam van het veld als waarden.. snappie?

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • []InTeR[]
  • Registratie: Januari 2001
  • Laatst online: 31-12-2023
...
edit:
thomaske was me voor.

[ Voor 94% gewijzigd door []InTeR[] op 14-01-2003 11:02 ]

Shit doesn't happen by it self, it's made by a arsehole.


  • []InTeR[]
  • Registratie: Januari 2001
  • Laatst online: 31-12-2023
MAar dan is het mij nog niet geheel duidelijk waarom je beide argumenten uit je db wilt halen.
Omdat de sleutel niet in de programmatuur mag staan, en deze anders is voor elke entry.

Shit doesn't happen by it self, it's made by a arsehole.


  • []InTeR[]
  • Registratie: Januari 2001
  • Laatst online: 31-12-2023
Bij mysql.com leggen ze wel uit dat een functie aanroepen binnen een decode() onmogenlijk is.
Zoals: decode(veldnaam,MD5(veldnaam))

Maar decode(veldnaam,veldnaam) moet toch gewoon kunnen?

Shit doesn't happen by it self, it's made by a arsehole.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Laat de ` es helemaal weg dan?

  • []InTeR[]
  • Registratie: Januari 2001
  • Laatst online: 31-12-2023
Werkt niet... :(

Shit doesn't happen by it self, it's made by a arsehole.


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Dan doe je het toch in twee slagen.
Eerst pass ophalen en in PHP-var zetten.
Dan deze PHP-var opnemen in de SQL-string.
Let wel dat dit alleen werkt bij het ophalen voor 1 gebruiker.

  • []InTeR[]
  • Registratie: Januari 2001
  • Laatst online: 31-12-2023
Daar zit ik dus mee,
ik wil een zoekactie doen in mysql. Aangezien het om 30.000 records gaat. (groeit nog).

PS: Decode is een mysql functie.

Shit doesn't happen by it self, it's made by a arsehole.


Verwijderd

Kun je die pass niet als MD5 hash opslaan in je db? Dan hoef je die functie niet aan te roepen...

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Volgens mij is je veld definitie fout....

pass moet volgens mij een BLOB zijn aangezien ENCODE een binary string maakt!

[edit]
Hier staat dus ONZIN....

* LuCarD moet meer koffie drinken...

[ Voor 24% gewijzigd door LuCarD op 17-01-2003 11:42 ]

Programmer - an organism that turns coffee into software.


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

LuCarD schreef op 17 January 2003 @ 11:27:
Volgens mij is je veld definitie fout....

pass moet volgens mij een BLOB zijn aangezien ENCODE een binary string maakt!
Nee, pass is het wachtwoord om een de tekst te encrypten.. het wachtwoord is gewoon een string. Het resultaat van de encode functie is wel een binary string, maar dat klopt ook, want name is als blob gedefinieerd..

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Je zal dit probleem moeten oplossen met een join ipv een decode.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • []InTeR[]
  • Registratie: Januari 2001
  • Laatst online: 31-12-2023
Mijn veld definitie is denk ik niet fout,
pass is gewoon een string. Die als KEY functioneerd bij de decode en encode.

In mijn programma staat ie ergens anders in de database.

De naam is een blob, daar staat de encode in die dus gedecode moet worden.

Het probleem wat ik heb, treed vooral op bij
code:
1
SELECT `id` FROM`gebruiker` WHERE decode(`naam`,`pass`) like '%zoek%'

Shit doesn't happen by it self, it's made by a arsehole.


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

dusty schreef op 17 januari 2003 @ 11:38:
Je zal dit probleem moeten oplossen met een join ipv een decode.
Wat wil jij hier dan joinen. Het staa toch al in één tabel.

  • []InTeR[]
  • Registratie: Januari 2001
  • Laatst online: 31-12-2023
Ook bij een mysql 4 server bestaad dit probleem nog steeds,
weet op dit moment ook echt niet meer waar ik het moet zoeken.

Shit doesn't happen by it self, it's made by a arsehole.

Pagina: 1