如果我想计算一列并在多于 1 列中使用结果,如何在不进行两次计算的情况下执行此操作?
例子:
SELECT LOWER(SUBSTRING([NAME], 4, 100)) + '@somedomain.com' as EMail
,hashbytes('SHA1', LOWER(SUBSTRING([NAME], 4, 100)) + '@somedomain.com') as HashedEmail
FROM sometable
Run Code Online (Sandbox Code Playgroud)
如何避免在不使用多个选择的情况下写两次?
gbn*_*gbn 13
派生表
SELECT
EMail,
hashbytes('SHA1', EMail) AS HashedEmail
FROM
(
SELECT LOWER(SUBSTRING([NAME], 4, 100)) + '@somedomain.com' as EMail
FROM sometable
) foo
Run Code Online (Sandbox Code Playgroud)
或 CTE:
;WITH cEMail AS
(
SELECT LOWER(SUBSTRING([NAME], 4, 100)) + '@somedomain.com' as EMail
FROM sometable
)
SELECT
EMail,
hashbytes('SHA1', EMail) AS HashedEmail
FROM
cEMail
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,我会考虑使用预先计算了哈希值的计算列
| 归档时间: |
|
| 查看次数: |
45508 次 |
| 最近记录: |