使用通配符作为值本身?

时间:2014-10-10 05:00:42

标签: mysql

美好的一天,我想在理论上建立这样的东西。

col1 | col2 | col3 | col... % | A | 0.0 | ... 1 | % | 0.2 | ... % | % | % | ... % | B | 0.1 | ... 2 | % | 0.0 | ...

所以当我查询时说...

  • 选择(col1)1 +通配符值,它将返回第0,1,2,3行。
  • 或选择(col1)2 +通配符值,它将返回第0,2,3,4行。

我当前的工作是一个草率的,我使用数据类型远端的值作为通配符占位符。例如,其中一些列是MEDIUMINT UNSIGNED,因此我使用" 16777215"作为通配符值。我正在使用像...这样的查询。

  • select * from TABLE where col1 IN (1, 16777215)
  • select * from TABLE where col1 IN (2, 16777215)

但我知道这是一种非常肮脏的方法,而且我慢慢接近我的厄运,因为随着时间的推移,实际价值可能会占据通配符的价值。

有没有更好的方法来解决这个问题?任何形式的建议或指示读什么都非常感谢。谢谢。

上下文:它是一个非常低级别和松散模式匹配的东西。

1 个答案:

答案 0 :(得分:0)

您可以使用NULL作为事实上的通配符值:

select * from TABLE where col1 IN (2, 3, ...) OR col1 IS NULL

请注意,这不会产生意外的副作用(例如在调用代码中获取NullPointerException)。