当前位置:  开发笔记 > 数据库 > 正文

在WHERE子句中重用计算列

如何解决《在WHERE子句中重用计算列》经验,为你挑选了1个好方法。

在SELECT语句中,我想在WHERE子句中重用计算列.有没有办法在SQLserver中这样做?

简化示例:

工作,但重复计算:

SELECT field1, concat(field2, field3) AS calc_field
  FROM MyTable
  WHERE concat(field2, field3) LIKE 'A%'

期望:

SELECT field1, concat(field2, field3) AS calc_field
  FROM MyTable
  WHERE calc_field LIKE 'A%'

Radu Gheorgh.. 6

无法在同一级别重用计算字段SELECT.您需要嵌套它才能使用别名.

SELECT field1
    , calc_field
FROM (
    SELECT field1
        , CONCAT (field2, field3) AS calc_field
    FROM MyTable
    ) tbl
WHERE calc_field LIKE 'A%'

这是因为在SQL查询中执行子句的顺序.正如您在列出子句的方式中所看到的,SELECT生成别名的WHERE子句在子句之后执行.

因此,别名在WHERE子句中不是"可见的" ,因为别名是在WHERE应用后生成的.



1> Radu Gheorgh..:

无法在同一级别重用计算字段SELECT.您需要嵌套它才能使用别名.

SELECT field1
    , calc_field
FROM (
    SELECT field1
        , CONCAT (field2, field3) AS calc_field
    FROM MyTable
    ) tbl
WHERE calc_field LIKE 'A%'

这是因为在SQL查询中执行子句的顺序.正如您在列出子句的方式中所看到的,SELECT生成别名的WHERE子句在子句之后执行.

因此,别名在WHERE子句中不是"可见的" ,因为别名是在WHERE应用后生成的.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有