首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >postgres是否在情况下优化相同的表达式?

postgres是否在情况下优化相同的表达式?
EN

Stack Overflow用户
提问于 2021-12-07 16:28:17
回答 1查看 44关注 0票数 1

我想从数据库的text列中获取数字(例如,下一个文本是'Test 900 test')

代码语言:javascript
复制
select substring('Test 900 g' from '[0-9]+\.?[0-9]*')

文本中的数字可以是浮点数(从0到1),也可以是整数(>100),我想用下面的方式使用CASE将其转换为单一浮动格式

代码语言:javascript
复制
select case when substring('Test 900 g' from '[0-9]+\.?[0-9]*')::numeric >= 100 
                 then substring('Test 900 g' from '[0-9]+\.?[0-9]*')::numeric / 10000
            else substring('Test 900 g' from '[0-9]+\.?[0-9]*')::numeric
       end as single_format

Postgres是每次在这个CASE构造中重新计算子字符串值,还是对每一行只进行一次优化和计算?

EN

回答 1

Stack Overflow用户

发布于 2021-12-07 18:07:44

不容易回答您的查询。

表达式只应在以下查询中计算一次:

代码语言:javascript
复制
select case 
         when num >= 100 
         then num / 10000
         else num
       end as single_format
  from CAST(substring('Test 900 g' from '[0-9]+\.?[0-9]*') AS numeric) AS num
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70263679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档