Pokud chci vypočítat sloupec a použít výsledek ve více než 1 sloupci, jak to mohu udělat, aniž bych provedl výpočet dvakrát?
Příklad:
SELECT LOWER(SUBSTRING([NAME], 4, 100)) + '@somedomain.com' as EMail
,hashbytes('SHA1', LOWER(SUBSTRING([NAME], 4, 100)) + '@somedomain.com') as HashedEmail
FROM sometable
Jak se mohu vyhnout zápisu dvakrát bez použití více než jednoho výběru?
Odvozená tabulka
SELECT
EMail,
hashbytes('SHA1', EMail) AS HashedEmail
FROM
(
SELECT LOWER(SUBSTRING([NAME], 4, 100)) + '@somedomain.com' as EMail
FROM sometable
) foo
nebo 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
V tomto případě bych však uvažoval o použití vypočtený sloupec s předem vypočítaným hashem
Nejprve si myslím, že jste chtěli psát hashbytes místo haststringu. hashstring není funkce SQL.
Zde je kód, který vám dá, jak chcete, doufám.
DECLARE @yourvariable nvarchar (50) = '@somedomain.com';
SELECT LOWER(SUBSTRING([NAME], 4, 100)) + @yourvariable as EMail
,HashBytes('SHA1', LOWER(SUBSTRING([NAME], 4, 100)) + @yourvariable) as HashedEmail
FROM sometable;