首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据Postgres中的另一列设置列的值?

根据Postgres中的另一列设置列的值?
EN

Stack Overflow用户
提问于 2015-03-17 13:09:38
回答 1查看 8.6K关注 0票数 5

我正在使用Postgres 9.1,并且在我的表中添加了一个新的布尔列:

代码语言:javascript
复制
ALTER TABLE frontend_item ADD COLUMN is_generic BOOLEAN;

该列的值将基于另一列code的值。如果code的字符10-11是AA,那么is_generic的值应该是TRUE。否则,它应该是false (如果尚未设置,则为null )。

我的问题是我怎么能在Postgres做到这一点?我已经能够使用这些文档计算出一些单独的组件:

代码语言:javascript
复制
 UPDATE frontend_item SET is_generic...

然后我知道我可以得到code的子字符串如下所示:

代码语言:javascript
复制
 substring(code from 10 for 2)

但是如何将子字符串转换为布尔值,然后将其与UPDATE语句结合在一起呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-17 13:12:47

代码语言:javascript
复制
UPDATE frontend_item
SET    is_generic = (substring(code from 10 for 2) = 'AA');

但是你真的需要多余的列吗?您可以继续使用表达式substring(code from 10 for 2),面对表的可能更新,这个表达式更可靠。该功能的成本较低,保持表小对整体性能有好处。

冗余存储很少是个好主意。只适用于特殊的优化。

顺便说一句,还有一个不那么冗长的Postgres变体也是这样做的:

代码语言:javascript
复制
substr(code, 10, 2)

参见手册中的字符串函数。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29099946

复制
相关文章

相似问题

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