sql - 在 SQL SELECT 中重复相同的操作
问题描述
我正在将一列解析为不同的表,并且我有一个不断重复的操作。有没有办法避免冗余,例如,定义一个变量?这就是我的查询的样子:
SELECT
CAST(CONCAT('0x', composed) as INT64)>>1 AS FIRST_VALUE,
CAST(CONCAT('0x', composed) as INT64)>>2 AS SECOND_VALUE,
...
我想要类似的东西:
SELECT
INTERMEDIATE_VALUE = CAST(CONCAT('0x', composed) as INT64)
INTERMEDIATE_VALUE>>1 AS FIRST_VALUE,
INTERMEDIATE_VALUE>>2 AS SECOND_VALUE,
...
这样 cast/concat 操作每个值只发生一次,而不是 n 次。
编辑: 我还想将 INTERMEDIATE_VALUE 与 WHERE 子句一起使用
解决方案
简单的解决方案:
select
INTERMEDIATE_VALUE>>1 AS FIRST_VALUE,
INTERMEDIATE_VALUE>>2 AS SECOND_VALUE,
....
from (
select CAST(CONCAT('0x', composed) as INT64) as INTERMEDIATE_VALUE
from ....
)
where INTERMEDIATE_VALUE = 'something'
推荐阅读
- mysql - 有条件地删除mysql中的最后一行
- javascript - 如何创建带有随机数的数组?
- java - Java - 摆脱硬编码
- datagrid - devexpress 在数据网格单元格中显示标签框数据
- html - 已启用 已禁用 根据先前的下拉菜单选择选项?
- c# - 未找到 microsoft.ui.xaml
- reactjs - 无法在已删除部分中获取表格项目
- azure-devops - 在 Azure YAML Devops Pipelines 中管理依赖项
- excel - excel vba方法addpicture有时不起作用
- javascript - 使用 post 方法更新循环的进度条