非数字或字母数据库值的值范围查询

时间:2013-12-05 15:44:06

标签: mysql

我有一个MySql数据库,其中包含一个名为clar的字段,数据值为:SI2,SI1,VS2,VS1,VVS2,VVS1,IF,FL

这是从最低的标度:SI2到最高:FL

我无法更改数据库表中的数据格式,即将值更改为数值。例如:SI2 = 1 FL = 8

我想用以下内容查询表:

SELECT * FROM `table` WHERE `clar` BETWEEN 'SI2' AND 'FL'

获取SI2和FL之间的值范围。

我怎么能这样做?

显然上面的查询给了我一个不正确的数据范围,因为它既不是字母也不是数字。

示例行:

field1  field2  field3  field4  clar    field6
-----------------------------------------------
500569  BR      0.120   E       VS2     0.00
500110  BR      0.120   G       SI2     0.00
500549  BR      0.120   F       SI1     0.00

2 个答案:

答案 0 :(得分:4)

SELECT * FROM `table`
 WHERE FIELD (`clar`, 'SI2','SI1','VS2','VS1','VVS2','VVS1','IF','FL')
       BETWEEN 1 AND 8

如果您想要不同的范围,则只需更改BETWEEN条件中的数值。例如,要获取分数在VS2IF之间的行,请指定BETWEEN 3 and 7

答案 1 :(得分:1)

您可以明确命名您要查找的值

SELECT * FROM `table` 
WHERE `clar` in ('SI2','SI1','VS2','VS1','VVS2','VVS1','IF','FL')