it-swarm.asia

كيفية استخدام المتغيرات داخل محدد (SQL Server)؟

إذا كنت أرغب في حساب عمود واستخدام النتيجة في أكثر من عمود واحد ، فكيف أفعل ذلك بدون إجراء الحساب مرتين؟

مثال:

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

كيف أتجنب كتابة هذا مرتين دون استخدام أكثر من تحديد؟

8
yellowblood

جدول مشتق

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

أو 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

ومع ذلك ، في هذه الحالة ، سأفكر في استخدام العمود المحسوب مع التجزئة المُحسوبة مسبقًا

13
gbn

أولاً ، أعتقد أنك أردت كتابة هاشبيت بدلاً من التسرع. التجزئة ليست دالة SQL.

هذا هو الرمز الذي سيعطيك ما تريده كما آمل.

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