2011-01-07 50 views
4

如果結果的值爲「15.2」,「UNK」,「1.4」,如何才能使此選擇僅帶有「1.4」的行?SQL:「... WHERE result <4.0」如果'result'是:「15.2」,「UNK」,「1.4」?

SELECT * FROM tbl WHERE result<4.0 

(理想的東西,無論是MSSQL和MySQL ......)

這裏是 '結果' 列

CREATE TABLE IF NOT EXISTS `tbl` (
    `result` varchar(5) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

INSERT INTO `tbl` (`result`) VALUES ('15.2'),('UNK'),('1.4'); 
+0

15.2不小於4.0? – marcog 2011-01-07 14:41:43

回答

1
select * 
    from tbl 
    where 1 = case ISNUMERIC(result + 'e0') 
        when 1 then case when CAST(result as float) < 4.0 
            then 1 
            else 0 
           end 
        when 0 then 0 
       end 
+0

實際上可能是任何字符串 – ajo 2011-01-07 14:51:55

+0

@ajo:修改了我的答案,其版本適用於MSSQL。 MySQL沒有內置的ISNUMERIC。 – 2011-01-07 14:56:08

0

@ajo,如果你想選擇如果結果的值是「15.2」,「UNK」,「1.4」,那麼只有行數爲「1.4」的行使用Like?

SELECT * FROM tbl WHERE result like'1.4'

0

這是否適合您?

SELECT * FROM table WHERE ISNUMERIC(result) = 1 AND result < 4; 
0

這適用於SQL服務器:

SELECT * 
    FROM tbl 
WHERE CAST(NULLIF(result, 'UNK') AS DECIMAL(9, 4)) < 4.0; 
相關問題