美好的一天,我想在理论上建立这样的东西。
col1 | col2 | col3 | col...
% | A | 0.0 | ...
1 | % | 0.2 | ...
% | % | % | ...
% | B | 0.1 | ...
2 | % | 0.0 | ...
所以当我查询时说...
我当前的工作是一个草率的,我使用数据类型远端的值作为通配符占位符。例如,其中一些列是MEDIUMINT UNSIGNED,因此我使用" 16777215"作为通配符值。我正在使用像...这样的查询。
select * from TABLE where col1 IN (1, 16777215)
select * from TABLE where col1 IN (2, 16777215)
但我知道这是一种非常肮脏的方法,而且我慢慢接近我的厄运,因为随着时间的推移,实际价值可能会占据通配符的价值。
有没有更好的方法来解决这个问题?任何形式的建议或指示读什么都非常感谢。谢谢。
上下文:它是一个非常低级别和松散模式匹配的东西。答案 0 :(得分:0)
您可以使用NULL
作为事实上的通配符值:
select * from TABLE where col1 IN (2, 3, ...) OR col1 IS NULL
请注意,这不会产生意外的副作用(例如在调用代码中获取NullPointerException
)。