我想知道是否有办法忽略PostgreSQL表达式中的一系列字符LIKE 在我的表中,我有一些值,从不同数量的零开始。我希望能够找到正确的值,而不将这些零放在我的LIKE表达式中。 有一个例子:
id value
1 00045
2 00145
3 00003
现在,当我开始寻找值00045时,我想只输入" 45"并且只返回与id = 1相关的值。喜欢'%45'显然是不可能的,因为我不希望选择值00145。
有一种简单的方法吗?
答案 0 :(得分:1)
您可以在比较之前将字段转换为where子句中的整数(SQL Fiddle):
SELECT *
FROM MyTable m
WHERE CAST(coalesce(m.value, '0') AS integer) = 45
如果您知道value
将始终包含某些内容,那么您可以省略合并(SQL Fiddle):
SELECT *
FROM MyTable m
WHERE CAST(m.value AS integer) = 45;
答案 1 :(得分:1)
您可以使用ltrim()
功能。它需要省略前导字符的第二个参数:
select *
from example e
where ltrim(e.value, '0') = '45';
或者,如果值总是5个字符长,则可以使用:
select *
from example e
where e.value = lpad('45', 5, '0');
第一种方法的优点是它不假设该值是整数。第二个优点是它允许Postgres在example(value)
上使用索引(如果有的话)。