2012-07-15 25 views
0

我的員工表有一個包含如1A,1B,1C,2A,2B,& 2C等值的工作級別的列。 員工等級爲2C> 2B> 2A> 1C> 1B> 1A。MySQL在字母數字列的條件

現在,如果我寫這樣的查詢:

SELECT * 
FROM employee 
WHERE work_level >= 1C 

是重回僅含工作水平1C,2A,2B,2C行?

如果不是,那我該怎麼辦?

回答

1

是的,它會返回所需的行,但千萬記得要倒逗號添加到where子句::

SELECT * FROM employee WHERE work_level >= '1C' 
+0

'倒逗號'?這是一個引用,而不是任何形式的逗號。 – 2012-07-15 06:18:54

+3

@Marc BI從來沒有見過這樣的表達,但是「倒序逗號」似乎是英國英語中「引號」的同義詞...... – RandomSeed 2012-07-15 08:30:56

+1

請問這個如果你有'WHERE work_level> ='25C'',你會工作嗎? – 2012-07-15 10:59:15

0

嘗試是這樣的:

讓我們說你有一些work_level小號和輸入下文所定義:

set @work_level1 = '25C'; 
set @input_work_level1 = '1C'; 

set @work_level2 = '2C'; 
set @input_work_level2 = '15C'; 

set @work_level3 = '2A'; 
set @input_work_level3 = '1C'; 

set @work_level4 = '2C'; 
set @input_work_level4 = '15B'; 

運行以下查詢:

select 
(cast(left(@work_level1, length(@work_level1)-1) as unsigned) 
    >= 
    cast(left(@input_work_level1, length(@input_work_level1)-1) as unsigned) 
) 
and 
right(@work_level1, 1) <= right(@input_work_level1, 1) 
as '''25C'' >= ''1C''', 

(cast(left(@work_level2, length(@work_level2)-1) as unsigned) 
    >= 
    cast(left(@input_work_level2, length(@input_work_level2)-1) as unsigned) 
) 
and 
right(@work_level2, 1) <= right(@input_work_level2, 1) 
as '''2C'' >= ''15C''', 

(cast(left(@work_level3, length(@work_level3)-1) as unsigned) 
    >= 
    cast(left(@input_work_level3, length(@input_work_level3)-1) as unsigned) 
) 
and 
right(@work_level3, 1) <= right(@input_work_level3, 1) 
as '''2A'' >= ''1C''', 

(cast(left(@work_level4, length(@work_level4)-1) as unsigned) 
    >= 
    cast(left(@input_work_level4, length(@input_work_level4)-1) as unsigned) 
) 
and 
right(@work_level4, 1) <= right(@input_work_level4, 1) 
as '''2C'' >= ''15B''' 
; 

會導致:

+---------------+---------------+--------------+---------------+ 
| '25C' >= '1C' | '2C' >= '15C' | '2A' >= '1C' | '2C' >= '15B' | 
+---------------+---------------+--------------+---------------+ 
|    1 |    0 |   1 |    0 | 
+---------------+---------------+--------------+---------------+