1

我有一个像这样的查询:

SELECT (column LIKE 'string')+100

它返回错误:运算符不存在:布尔+整数

我找不到将 bool 转换为 int 的函数,只有文本转换为 int:to_number()。

有没有办法解决这个问题?

4

4 回答 4

1
SELECT (column LIKE 'string')::integer +100
于 2013-02-16T19:44:49.380 回答
1

使用条件表达式,请参阅http://www.postgresql.org/docs/9.2/static/functions-conditional.html

于 2013-02-16T19:23:30.287 回答
1

如果要将字符串比较在 true 时转换为 1,在 false 时转换为 0,可以使用 case 语句:

select case when column like '%foo%' then 1 else 0 end as my_int from my_table;

如果您想添加到该结果中,您可以执行以下操作:

select (case when column like '%foo%' then 1 else 0 end) + 100 as my_int from my_table;
于 2013-02-16T19:24:12.877 回答
1

我需要更便携的解决方案,所以这个最适合我:

SELECT CAST((column LIKE 'string') AS integer)+100
于 2013-02-17T05:10:17.643 回答