亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

php - MYSQL裡類似20-35這種格式的年齡段字段,如何進(jìn)行範(fàn)圍查找?
代言
代言 2017-06-10 09:47:49
0
8
1151

mysql裡有個(gè)字段age,裡面存的是年齡段,格式類別如圖所示,如果是0-0則是不限

現(xiàn)在的需求是要根據(jù)年齡層來查找,例如我要找出所有介於25-34歲之間的數(shù)據(jù)。

那麼問題來了,如果where裡面使用and的話,得到的結(jié)果很少很少,幾乎沒有,如果使用or,結(jié)果是變多了,但是很明顯結(jié)果並不準(zhǔn)確。如何才能準(zhǔn)確的查找呢

感謝大家的回答,目前我用的方法是

SELECT age FROM jobs
WHERE ((substring_index(age,'-',1) >= 16 OR substring_index(age,'-',-1) = 0 ) OR (substring_index(age,'-',-1) <= 24)) AND !(substring_index(age,'-',1) = 0 AND substring_index(age,'-',-1) = 0) ;

勉強(qiáng)能用,但總覺得哪裡怪怪的

代言
代言

全部回覆(8)
劉奇

照你說的30-55符合25-34的話,可以這樣

select * from tbl where left(age,2)<=34 and right(age,2)>=25;
洪濤

這個(gè)不好判斷,30-55 符不符合你要的25-34的條件呢?還是必須要在25-34之內(nèi)的?要看你的具體要求了

扔個(gè)三星炸死你

我很好奇為什麼資料表結(jié)構(gòu)要這樣設(shè)計(jì) 為什麼不是存年齡? 如果這樣設(shè)計(jì)表結(jié)構(gòu) 為什麼還要有取25-34歲的資料?你的年齡只是指定的一個(gè)區(qū)間不是一個(gè)具體數(shù)值 你應(yīng)該重新去設(shè)計(jì)你的表結(jié)構(gòu) 不要將錯(cuò)就錯(cuò)

伊謝爾倫

1、你這樣存年齡段,是不是應(yīng)該在另起一個(gè)key來區(qū)分年齡的跨度。
2、截圖還出現(xiàn)1-5,2-6,3-4這樣的跨度設(shè)計(jì),如果使用者要是3該選哪個(gè)合理。

代言

一大堆對mysql內(nèi)建函數(shù)都沒認(rèn)透的人也給別人亂指導(dǎo)

為情所困

問題源頭,資料庫設(shè)計(jì)不合理

滿天的星座

推薦你用抽象的思維反推一下:將表裡age字段存的信息看作集合 A,將 where 中的條件看作集合 C,你最終的結(jié)果是要符合什麼情況?

  1. 集合 A 和集合 C 有交集

  2. 集合 A 是集合 C 的子集

  3. 集合 C 是集合 C 的自己

然後在這個(gè)基礎(chǔ)上,你目前表結(jié)構(gòu)肯定是不適合的,如果資料量不大的話,可以對資料做個(gè)離線清洗,將age 欄位拆分成lower limit 和upper limit,這樣再做集合篩選方法就很多了。

伊謝爾倫

你這表結(jié)構(gòu)無法實(shí)現(xiàn)你說的功能

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板