mysql set類型字段問題
問題描述
mysql設計的時候遇到一個多選項問題,搜索了一番似乎使用SET類型比較方便實現。
雖然弄明白了SET字段的存儲及查詢方法,但無奈能搜到的資料有限,還是有兩個問題找不到頭緒。
假設字段名為 flag ,SET的預設值有 A,B,C,D,E,F,G六個。
因為SET的預設值可能會增多,那么怎么能自動讀出 SET的所有的預設值呢?
對于查詢含有某個或者某幾個值的時候可以使用:
SELECT * FROM table WHERE FIND_IN_SET(’A’,flay);SELECT * FROM table WHERE FIND_IN_SET(’A,C’,flay); 類似的進行查詢。但如果想要查詢哪些包含一個選項(只有A或者B或者C……),哪些包含多個選項該怎么查詢呢(AC,BCD什么的)?
問題解答
回答1:這個確實比較惡心,方法有二,但都不怎么好
desc table_name set_column_name
到information_schema里面去select這兩種方法的可編程性都較差。如果我來搞的話,我可能會再創建一張表來存選項列表
貌似也沒啥好辦法,可以用select char_length(set_column_name) from table_name;來看字符數,間接的搞定
回答2:CREATE TABLE `table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `value` char(1) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以這種結構來存儲會比較靈活。
相關文章:
1. python - 數據與循環次數對應不上2. mysql - 把一個表中的數據count更新到另一個表里?3. 請教使用PDO連接MSSQL數據庫插入是亂碼問題?4. mysql - 分庫分表、分區、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處5. Python爬蟲如何爬取span和span中間的內容并分別存入字典里?6. 視頻文件不能播放,怎么辦?7. mysql 查詢身份證號字段值有效的數據8. python - 爬蟲模擬登錄后,爬取csdn后臺文章列表遇到的問題9. node.js - nodejs開發中常用的連接mysql的庫10. 黑客 - Python模塊安全權限
