postgreSQL 中的显式类型转换

sFo*_*jit 3 postgresql

我使用下面的查询连接两个表:

update campaign_items
set last_modified = evt.event_time
from (
    select max(event_time) event_time
        ,result
    from events
    where request = '/campaignitem/add'
    group by result
    ) evt
where evt.result = campaign_items.id
Run Code Online (Sandbox Code Playgroud)

其中结果列是字符变化类型,id是整数类型但结果列中的数据包含数字(即12345)

我将如何运行此查询并将结果类型(字符)转换为 id(整数)

e4c*_*4c5 5

那么你不需要这样做,因为 postgresql 在这种情况下会进行隐式类型转换。例如,您可以尝试

 select ' 12 ' = 12
Run Code Online (Sandbox Code Playgroud)

您将看到,即使字符串版本中有额外的空格,它也会返回 true。尽管如此,如果您需要显式转换。

 where evt.result::int = campaign_items.id 
Run Code Online (Sandbox Code Playgroud)

根据您的评论,您有诸如 convRepeatDelay 之类的值,这些值显然无法转换为 int。然后你应该做的就是将你的 int 转换为 char!

 where evt.result = campaign_items.id::char
Run Code Online (Sandbox Code Playgroud)