Autor | Zpráva | ||
---|---|---|---|
AM_ Profil |
#1 · Zasláno: 17. 5. 2012, 13:37:02
Zdravím,
mám takový spíše teoretický dotaz. Datový typ SET v Mysql umožňuje výběr 0-n hodnot z množiny (dle manuálu, zero or more values). Přitom 0 vybraných hodnot je reprezentováno prázdným stringem. Jedna z možných hodnot SET může ale být právě prázdný string. Lze tedy nějak rozlišit, zda je vybrána právě hodnota "prázdný string", nebo žádná z množiny? Nebo jde o jeden z případů, kdy logika MySQL trochu pokulhává? mohu mít totiž: CREATE TABLE test( setWithEmpty SET ('a','b','c',''), setWithoutEmpty SET('a','b','c') ); INSERT INTO test(setWithEmpty, setWithoutEmpty) VALUES ('', ''); -- jak se rozliší, zda se do sloupce setWithEmpty vybral prvek "prázdný string", nebo žádný prvek? INSERT INTO test(setWithEmpty, setWithoutEmpty) VALUES ('a,', 'a,'); -- u setWithEmpty opravdu tuto hodnotu nastavit jde, u druhého sloupečku ne - prázdná hodnota v množině je tedy i pro MySQL něco jiného, než prázdná množina Chápu, že v praxi asi málokdo používá prázdnou hodnotu v datovém typu SET, ale píšu databázový framework a měl bych rád jasno v tom, jak se to v různých případech chová a hlavně jak toto chování chápat... Děkuji za odpovědi. |
||
Tori Profil |
#2 · Zasláno: 17. 5. 2012, 14:15:29
Šlo by nastavit ten sloupec na NULL a ze strany aplikace zajistit, aby se rozlišovala platná hodnota "" od nezadané/nedefinované hodnoty. Keďže data z formuláře přijdou vždy jako řetězec, muselo by se to nějak ošetřit - phpMyAdmin používá zaškrtávátka pro vložení nulové hodnoty.
|
||
Kajman Profil |
#3 · Zasláno: 17. 5. 2012, 14:36:46
Myslím, že jim to pokulhává, první insert tam prázdnou hodnotu nevloží, druhý ano, ale find_in_set u druhého případu prázdný string nenajde. Asi by s tím musel pracovat framework jako s bitovými operacemi nad číslem.
|
||
Časová prodleva: 12 let
|
0