在这里完成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但不愿意
是谁都在乎开导我?答案 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
作为通配符值。