如果结果的值为“15.2”,“UNK”,“1.4”,如何选择只有“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 :(得分: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
答案 1 :(得分:0)
@ajo,如果你想只选择带有“1.4”的行,如果结果的值为“15.2”,“UNK”,“1.4”,那么使用Like?
SELECT * FROM tbl WHERE结果类似于'1.4'
答案 2 :(得分:0)
这对你有用吗?
SELECT * FROM table WHERE ISNUMERIC(result) = 1 AND result < 4;
答案 3 :(得分:0)
这适用于SQL Server:
SELECT *
FROM tbl
WHERE CAST(NULLIF(result, 'UNK') AS DECIMAL(9, 4)) < 4.0;