Autor | Zpráva | ||
---|---|---|---|
gardener Profil |
#1 · Zasláno: 4. 2. 2009, 00:15:46
Zdravím Mám takový menší problém
Pokud pošlu dotaz na DB ve formátu např: mysql_query("SELECT * FROM seznam WHERE 'Finsko' in (interpret,album,styl,zeme_puvodu)") Dostanu výsledek s tím co hledám.. Pokud ale do výběru sloupců zařadím jakýkolliv sloupec který obsahuje datový typ int nebo year Je mi vrácen celý obsah db, stejně jako bych napsal SELECT * FROM seznam.... Problém je v tom, že bych rád takto vyhledával i například podle roku, nebo id.. Tuší někdo prosím,jak by se to dalo vyřešit? Díky za každou radu.. |
||
TomášK Profil |
#2 · Zasláno: 4. 2. 2009, 13:01:22 · Upravil/a: TomášK
MySQL dokumentace:
You should never mix quoted and unquoted values in an IN list because the comparison rules for quoted values (such as strings) and unquoted values (such as numbers) differ. Mixing types may therefore lead to inconsistent results. Aneb v IN by nikdy neměl být INT a řetězec naráz. Řešením je tedy přetypovat INT na řetězec (možná budeš potřebovat nastavit správnou COLLATE (jak je to česky?), narazil jsem na to, když jsem to zkoušel): SET NAMES utf8 COLLATE utf8_czech_ci; SELECT * FROM osoby WHERE '0' IN (jmeno, CAST(id AS CHAR)) |
||
Vanama Profil |
#3 · Zasláno: 4. 2. 2009, 14:09:30
„COLLATE (jak je to česky?)“
Porovnávání ? :) |
||
Kajman_ Profil * |
#4 · Zasláno: 4. 2. 2009, 15:58:37
A jednodušší bude tam narvat samé or, tam se to přetypuje samo.
|
||
gardener Profil |
#5 · Zasláno: 4. 2. 2009, 17:25:12 · Upravil/a: gardener
.
|
||
gardener Profil |
#6 · Zasláno: 4. 2. 2009, 17:40:45
Tak CAST je bohužel nefunkční:
Illegal mix of collations for operation ' IN ' s tím OR všude si také nejsem jist, zda by to fungovalo správně, a hlavně při takovém počtu OR je to jen otázka času, kdy něco zapomenu změnit a dotaz nebude pracovat korektně. |
||
Časová prodleva: 15 let
|
0