我正在使用Postgres 9.1,并且在我的表中添加了一个新的布尔列:
ALTER TABLE frontend_item ADD COLUMN is_generic BOOLEAN;该列的值将基于另一列code的值。如果code的字符10-11是AA,那么is_generic的值应该是TRUE。否则,它应该是false (如果尚未设置,则为null )。
我的问题是我怎么能在Postgres做到这一点?我已经能够使用这些文档计算出一些单独的组件:
UPDATE frontend_item SET is_generic...然后我知道我可以得到code的子字符串如下所示:
substring(code from 10 for 2)但是如何将子字符串转换为布尔值,然后将其与UPDATE语句结合在一起呢?
发布于 2015-03-17 13:12:47
UPDATE frontend_item
SET is_generic = (substring(code from 10 for 2) = 'AA');但是你真的需要多余的列吗?您可以继续使用表达式substring(code from 10 for 2),面对表的可能更新,这个表达式更可靠。该功能的成本较低,保持表小对整体性能有好处。
冗余存储很少是个好主意。只适用于特殊的优化。
顺便说一句,还有一个不那么冗长的Postgres变体也是这样做的:
substr(code, 10, 2)参见手册中的字符串函数。
https://stackoverflow.com/questions/29099946
复制相似问题