Postgres查询整数列开头的数字

时间:2014-05-21 03:12:58

标签: sql postgresql types pattern-matching

我想查询一系列整数列,如下所示:10,1010,101010,201010

我想要所有以10开头的内容。将它们更改为字符串列不是一种选择。

我的感觉是使用位串运算符可能实现这一点:http://www.postgresql.org/docs/9.3/static/functions-bitstring.html

2 个答案:

答案 0 :(得分:2)

您无需将它们“更改”为字符串列。只是为了测试而投了:

SELECT *
FROM   tbl
WHERE  left(int_col::text, 2) = '10';

或者,更简洁:

...
WHERE  int_col::text LIKE '10%';

这也是适当的测试,因为你的条件是基于数字的十进制字符串表示。

答案 1 :(得分:1)

这可能看起来很愚蠢,但它可能会欺骗优化器使用索引(如果有的话)

SELECT *
FROM   tbl
WHERE  int_col = 10
   OR  int_col/10 = 10
   OR  int_col/100 = 10
   OR  int_col/1000 = 10
   OR  int_col/10000 = 10
   OR  int_col/100000 = 10
   OR  int_col/1000000 = 10
   OR  int_col/10000000 = 10
   -- ...
    ;