it-swarm.asia

Bagaimana cara menggunakan variabel di dalam pilih (SQL Server)?

Jika saya ingin menghitung kolom dan menggunakan hasilnya di lebih dari 1 kolom, bagaimana saya melakukan ini tanpa membuat komputasi dua kali?

Contoh:

SELECT LOWER(SUBSTRING([NAME], 4, 100)) + '@somedomain.com' as EMail
      ,hashbytes('SHA1', LOWER(SUBSTRING([NAME], 4, 100)) + '@somedomain.com') as HashedEmail
FROM sometable

Bagaimana saya menghindari menulis ini dua kali tanpa menggunakan lebih dari satu pilih?

8
yellowblood

Tabel yang diturunkan

SELECT
    EMail,
    hashbytes('SHA1', EMail) AS HashedEmail
FROM
    (
    SELECT LOWER(SUBSTRING([NAME], 4, 100)) + '@somedomain.com' as EMail
    FROM sometable
   ) foo

atau 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

Namun, dalam hal ini saya akan mempertimbangkan menggunakan kolom dihitung dengan hash yang sudah dihitung

13
gbn

Pertama, saya pikir Anda ingin menulis hashbytes daripada haststring. hashstring bukan fungsi SQL.

Berikut adalah kode yang akan memberi Anda inginkan yang Anda inginkan saya harap.

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;
3
yrushka