[MySQL] quootjes

Pagina: 1
Acties:

  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
ik heb de volgende twee ingekorte queries:

SQL:
1
2
3
4
5
6
7
8
9
10
SELECT a.id, a.name, a.surname, a.prefix, a.folder, b.name
FROM user a
LEFT JOIN folder b ON a.folder = b.id
WHERE (
`a.name` LIKE '%zl%'
OR `surname` LIKE '%zl%'

)
ORDER BY surname ASC
LIMIT 0 , 6 


SQL:
1
2
3
4
5
6
7
8
9
10
SELECT a.id, a.name, a.surname, a.prefix, a.folder, b.name
FROM user a
LEFT JOIN folder b ON a.folder = b.id
WHERE (
a.name LIKE '%zl%'
OR `surname` LIKE '%zl%'

)
ORDER BY surname ASC
LIMIT 0 , 6 



het verschil zit hem in de quootjes om a.name, zonder deze werkt de query, met niet. Kan ik nu het best deze quootjes overal weglaten of zit het probleem ergens anders?

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Waarom wil je uberhaupt die quotes ` om je kolomnamen :?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • webinn
  • Registratie: Oktober 2002
  • Laatst online: 06-06 12:44
weglaten (die zijn absoluut niet nodig)

[ Voor 65% gewijzigd door webinn op 09-07-2007 17:32 ]


  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
om eventuele conflicten met gereserveerde namen als order enzo te voorkomen en zodat de applicatie snel kon worden geport naart MSSQL, want dan hoeven enkel de ` vervangen te worden door ".

  • GlowMouse
  • Registratie: November 2002
  • Niet online
om eventuele conflicten met gereserveerde namen als order enzo te voorkomen en zodat de applicatie snel kon worden geport naart MSSQL, want dan hoeven enkel de ` vervangen te worden door ".
Precies, en je geeft MySQL nu opdracht op zoek te gaan naar een veld met de naam a.naam, want anders zou MySQL wel eens kunnen denken dat je het veld naam in de tabel a bedoelt. Waar je naar op zoekt bent is `a`.`naam`.

En als je die quotes zo graag wilt bij iedere kolomnaam, zet ze dan niet alleen in je WHERE-clausule.

[ Voor 10% gewijzigd door GlowMouse op 09-07-2007 17:37 ]


  • ERIKvanPAASSEN
  • Registratie: September 2006
  • Laatst online: 20-09 10:12

ERIKvanPAASSEN

Bug Killer

Je ziet door de syntax highlighting al dat name een gereserveerde naam is, daarom werkt het dus met die quotes wel en zonder niet. Ik zou zelf het gebruik van de kolomnaam name gewoon vermijden.

EDIT: Sorry, ik las niet helemaal goed, maar bovenstaande gaat nog steeds deels op.

[ Voor 19% gewijzigd door ERIKvanPAASSEN op 09-07-2007 17:40 ]


Verwijderd

Kortom: name is wel een gereserveerde naam, maar omdat je a.name doet snapt MySQL dat het om een kolom gaat. De juiste notatie is a.`name` als je quotes wil gebruiken.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 28-11 08:35

curry684

left part of the evil twins

Niakmo schreef op maandag 09 juli 2007 @ 17:33:
om eventuele conflicten met gereserveerde namen als order enzo te voorkomen en zodat de applicatie snel kon worden geport naart MSSQL, want dan hoeven enkel de ` vervangen te worden door ".
Ik zou ze voor MSSQL toch echt vervangen door blokhaken.

Professionele website nodig?


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 27-11 10:50

_Thanatos_

Ja, en kaal

MSSQL heeft zoiets als "quoted identifiers" wat betekent dat je identifiers tussen dubbele quotejes mag zetten. Ware het niet dat dat niet overal aanstaat... Dus blokhaken is veiliger, maar quotes kan dus eventueel ook.

日本!🎌


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 28-11 08:35

curry684

left part of the evil twins

Ja en default staan quoted identifiers aan, maar blokhaken zijn gewoon de overal beschikbare system default die wel futureproof is, dus moet je die gebruiken als je de keuze hebt.

Professionele website nodig?

Pagina: 1