mysql set類型字段問題
問題描述
mysql設(shè)計(jì)的時(shí)候遇到一個(gè)多選項(xiàng)問題,搜索了一番似乎使用SET類型比較方便實(shí)現(xiàn)。
雖然弄明白了SET字段的存儲(chǔ)及查詢方法,但無奈能搜到的資料有限,還是有兩個(gè)問題找不到頭緒。
假設(shè)字段名為 flag ,SET的預(yù)設(shè)值有 A,B,C,D,E,F(xiàn),G六個(gè)。
因?yàn)镾ET的預(yù)設(shè)值可能會(huì)增多,那么怎么能自動(dòng)讀出 SET的所有的預(yù)設(shè)值呢?
對(duì)于查詢含有某個(gè)或者某幾個(gè)值的時(shí)候可以使用:
SELECT * FROM table WHERE FIND_IN_SET(’A’,flay);SELECT * FROM table WHERE FIND_IN_SET(’A,C’,flay); 類似的進(jìn)行查詢。但如果想要查詢哪些包含一個(gè)選項(xiàng)(只有A或者B或者C……),哪些包含多個(gè)選項(xiàng)該怎么查詢呢(AC,BCD什么的)?
問題解答
回答1:這個(gè)確實(shí)比較惡心,方法有二,但都不怎么好
desc table_name set_column_name
到information_schema里面去select這兩種方法的可編程性都較差。如果我來搞的話,我可能會(huì)再創(chuàng)建一張表來存選項(xiàng)列表
貌似也沒啥好辦法,可以用select char_length(set_column_name) from table_name;來看字符數(shù),間接的搞定
回答2:CREATE TABLE `table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `value` char(1) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以這種結(jié)構(gòu)來存儲(chǔ)會(huì)比較靈活。
相關(guān)文章:
1. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個(gè)是怎么回事????2. 在應(yīng)用配置文件 app.php 中找不到’route_check_cache’配置項(xiàng)3. html按鍵開關(guān)如何提交我想需要的值到數(shù)據(jù)庫4. mysql取模分表與分表5. gvim - 誰有vim里CSS的Indent文件, 能縮進(jìn)@media里面的6. HTML 5輸入框只能輸入漢字、字母、數(shù)字、標(biāo)點(diǎn)符號(hào)?正則如何寫?7. 跟著課件一模一樣的操作使用tp6,出現(xiàn)了錯(cuò)誤8. PHP類屬性聲明?9. objective-c - ios 怎么實(shí)現(xiàn)微信聯(lián)系列表 最好是swift10. javascript - 請(qǐng)教如何獲取百度貼吧新增的兩個(gè)加密參數(shù)
