2013-02-14 68 views
2

希望有人可以幫助我在這裏...Mysql Beetween與一個字段進行比較?

我試圖弄清楚如何我可以做一個數據庫字段的檢查。

我有一個名爲「級別」字段,它存儲如「0-7」(0-7)中的數據

我怎麼做一個MySQL查詢檢查:

表「的價值觀「:

ID | LEVEL 
1 | 0-7 
2 | 3-6 
3 | 4-5 

查詢值」4「在任何行」級別「之間。

感謝您的幫助!

否則,我將不得不首先獲取所有行並進行拆分以驗證是否創建一個低值和高值的新字段,然後再進行比較。

更新:

所有偉大awnsers,但即使最壞的結果做了這個表的白癡

創建和額外的字段,如:

ID | LEVEL | Name 
1 | 1-7 | level 
2 | 3-6 | xperience 
3 | 4-5 | level 
4 | 1-5 | level 

意思就是我照着串也適用於使用「名稱」=級別。 這可能嗎?

+2

它可能會更好,如果你可以改變你的表的設計,包括像'low'和'high'列,然後檢查這個範圍。有些事告訴我,從長遠來看最終會讓你的生活更輕鬆。 – 2013-02-14 12:02:22

+1

@SayemAhmed同意。 – 2013-02-14 12:03:20

回答

1

這裏是如何做到這一點,如果你不想改變你的架構:

create table test(
    id integer primary key auto_increment, 
    level varchar(50) 
); 

insert into test(level) values('0-7'); 
insert into test(level) values('3-6'); 
insert into test(level) values('4-5'); 

commit; 

select * 
from test 
where 4 between SUBSTRING_INDEX(level, '-', 1) AND SUBSTRING_INDEX(level, '-', -1); 
+0

更新了我的問題 – 2013-02-14 12:41:12

3

讓2場所謂的「量_min」和「level_max」,使他們的數據從「0」存儲到「7」
然後使用MySQL之間的查詢

SELECT * FROM t WHERE 4 BETWEEN level_min AND level_max 

最重要的事情,這樣的查詢可以使用indedex,需要的id。
這對於任何或多或少的生活數據庫都是必不可少的。

+0

打我吧,而我正在玩我的substring函數在MySQL!這是真正做到這一點的最好方式,因爲當前的桌子設計很尷尬。 – Husman 2013-02-14 12:08:14

-1

我的水平場劃分爲2場,最小值和最大值,使生活更輕鬆。 但您可以對當前數據執行

select Id from table where 4 between SUBSTRING(level, 0, 1) and SUBSTRING(level, 2, 1) 

。 Mysql應該自動將子字符串轉換爲int。

+0

我認爲它不適合level = '12 -15' – fsw 2013-02-14 12:10:50

+0

更新了我的問題 – 2013-02-14 12:39:32

0

正如所指出的那樣,將性能分解是一個好主意。 如果因任何原因不能做到這一點,你可以使用SUBSTRING_INDEX:

SELECT * FROM values WHERE 
substring_index(level,'-',1) <= 4 AND 
substring_index(level,'-',-1) >= 4; 
+0

更新了我的問題 – 2013-02-14 12:39:50

+0

我不明白您更新的問題。不能,你只需在上面的查詢中添加「AND'Name' ='level'」? – fsw 2013-02-14 12:49:09

+0

我也必須檢查xperience ... 等級5和經驗2 – 2013-02-14 13:12:12

0
select * from table_name where 4 between SUBSTRING_INDEX(LEVEL,'-',1) 
and SUBSTRING_INDEX(LEVEL,'-',-1); 
相關問題