sql“范围”和通配符

时间:2009-08-22 18:43:22

标签: sql

在这里完成sql noob。

试着想办法将一些数据存储在一个看起来像这样的表中:

  

“0-15”,“低”,“1-3”

     

“45-50”,“med”,“*”

     

“*”,“*”,“1000”

第1栏和第1栏3是整数范围,col 2是枚举类型(可以真正存储)。

我希望能够在表格中添加通配符以保持行数下降,同时仍然没有“遗漏”任何内容。

从我的理解,第1栏和第1栏3最好存储为两列整数,其中-INT_MAX为INT_MAX或任何“通配符”。 (从bla中选择bla,其中col1.1> val和col1.2< val)

这是一个合理的策略吗?

第2列似乎比较棘手,从bla中选择bla,其中col2 ='med'或col2 ='*'似乎不正确。我可能会在数字上做这些就像1& 3但不愿意

是谁都在乎开导我?

2 个答案:

答案 0 :(得分:3)

我的偏好是使用NULL作为通配符,因为它将突出显示任何研究数据库的人。在这种情况下,WHERE子句的每个元素都将如下所示:

WHERE (77777 > min_value OR min_value IS NULL)
  AND (77777 < max_value OR max_value IS NULL)
  AND (col2 = 'med' OR col2 IS NULL)

这与您之前使用的*基本相同,但使用的是SQL认为与普通值不同的值。

答案 1 :(得分:1)

给定SQL,自然要做的就是使用NULL作为通配符值。