1
我有一个整数列,我需要寻找其中所述塔19如何在PostgreSQL中搜索整数范围?
在MySQL中我会使用SELECT ...开始行,其中id
LIKE '19%”
ERROR: operator does not exist: integer ~~ unknown LINE 1: select * from "table" where "id" like '19%'
我有一个整数列,我需要寻找其中所述塔19如何在PostgreSQL中搜索整数范围?
在MySQL中我会使用SELECT ...开始行,其中id
LIKE '19%”
ERROR: operator does not exist: integer ~~ unknown LINE 1: select * from "table" where "id" like '19%'
在Postgres LIKE只是字符串比较 - 解释错误。
可以明确转换列到字符串,但:
select * from "table" where id::text like '19%'
对于所有正整数> = 10,你可以用任何文本/ VARCHAR必要做到这一点:
SELECT * FROM "table"
WHERE $1 = id/(10^(floor(log(id)-1)))::integer
你可以索引这也是:
CREATE INDEX idx_table_2_digits
ON "table" (10/(id^(floor(log(id)-1)))::integer);
计算基本上是这样工作的:
该算法甚至可以概括为一个函数f(x,y),其中x是ID和Y是领先的位数返回:
# python-esque pseudocode:
def integer_leading_digits (id, digits):
if id < (10 * (digits - 1)):
return -1 # error condition
return id DIV int(10^(floor(log(id)-(digits-1))))
我会建议`其中CAST(id AS文本)像'19%'`但'id :: text`更好。 – 2011-02-08 07:05:23