国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

find_in_set - 請(qǐng)教 mysql查詢

瀏覽:136日期:2022-06-20 18:36:16

問題描述

mysql 表中字段option_tag 存儲(chǔ)的值格式(分號(hào))為: 4:539;8:543;4:545;8:549通過 find_in_set() 可以查找到以逗號(hào)分隔的字符串。以分號(hào)分隔的 字符串 有什么函數(shù)直接能查詢到 option 含有 539的所有值?

find_in_set - 請(qǐng)教 mysql查詢

問題解答

回答1:

sql語句:SELECT * FROM tableWHERE locate(’:539;’, CONCAT(options_tag, ’;’)) > 0

用like的方法邏輯上不嚴(yán)謹(jǐn),如4:2539這種情況也會(huì)被like匹配,但不是想要的結(jié)果。

從設(shè)計(jì)方案考慮,如果是復(fù)雜的數(shù)據(jù)類型,建議存成json格式,mysql高版本直接內(nèi)置了json解析、查詢功能。

回答2:

通過like或者正則即可。但是不建議將邏輯放在mysql中,造成數(shù)據(jù)庫(kù)引擎壓力過大,而且極度不安全。正確的做法應(yīng)該是把整個(gè)字段的值取出來,作為字符串然后用語言比如php python nodejs之類的處理。

回答3:

SELECT * FROM tableWHERE options_tag LIKE ’%539%’;

正如@小蟲哥哥 所說,這是設(shè)計(jì)缺陷,這看起來是一個(gè)一對(duì)多或者多對(duì)多的關(guān)系,不應(yīng)該用一個(gè)字段存起來,不僅查詢效率低(在SQL里對(duì)字段進(jìn)行運(yùn)算有可能會(huì)使該字段的索引無法被使用),而且查詢起來也不靈活。

回答4:

like 匹配

回答5:

like :539

回答6:

我說這是設(shè)計(jì)缺陷有人贊同嗎

回答7:

like相似匹配

回答8:

模糊查詢研究下

相關(guān)文章:
主站蜘蛛池模板: 英德市| 维西| 阳山县| 澎湖县| 昌江| 徐州市| 蒲城县| 九龙县| 定南县| 庐江县| 上饶县| 大同市| 连城县| 壤塘县| 井研县| 枝江市| 佛学| 宁强县| 勃利县| 阿鲁科尔沁旗| 遂宁市| 永定县| 米脂县| 西乡县| 二连浩特市| 商都县| 远安县| 兰西县| 盘锦市| 灌云县| 古浪县| 辽中县| 浦县| 麦盖提县| 元阳县| 平江县| 紫金县| 大余县| 定结县| 宜良县| 绥宁县|