在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
应用后生成的.
无法在同一级别重用计算字段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
应用后生成的.