任何人都可以給我一些示例TSQL代碼來比較兩個電子郵件地址來檢查它們是否相等?TSQL函數比較兩個字符串
CLR函數不是一個選項。我嘗試過,但由於某種原因,我們的DBA完全反對在SSMS中使用CLR函數。
我知道如何從電子郵件地址獲取域名(例如:mycompany.com)。
真的很感激任何建議提前
任何人都可以給我一些示例TSQL代碼來比較兩個電子郵件地址來檢查它們是否相等?TSQL函數比較兩個字符串
CLR函數不是一個選項。我嘗試過,但由於某種原因,我們的DBA完全反對在SSMS中使用CLR函數。
我知道如何從電子郵件地址獲取域名(例如:mycompany.com)。
真的很感激任何建議提前
不是真的知道你正在尋找。從你的問題,我明白你需要檢查2個電子郵件地址相似/不相似。
爲什麼你不能使用它?
declare @email1 varchar(100) set @email1 = '[email protected]'
declare @email2 varchar(100) set @email2 = '[email protected]'
IF
@[email protected]
BEGIN
PRINT 'Same Email'
END
ELSE
BEGIN
PRINT 'Not Same Email'
END
拉吉
非常好的簡單實現,但沒有考慮到CI和CS。使用校驗和來滿足粒度需求,如Aleksandr所述。 – GoldBishop
測試
感謝兩個電子郵件地址是否具有相同的域:
declare @email1 varchar(100) set @email1 = '[email protected]'
declare @email2 varchar(100) set @email2 = '[email protected]'
select
case when
right(@email1, len(@email1) - charindex('@', @email1)) =
right(@email2, len(@email2) - charindex('@', @email2))
then 'Same domain'
else 'Different domains'
end
謝謝大家的回答。我得到了我一直在尋找的 –
在SQL Server 2005+使用功能校驗和()
校驗計算散列值,稱爲校驗,在它的參數列表。散列值旨在用於構建散列索引。如果CHECKSUM的參數是列,並且索引是根據計算的CHECKSUM值構建的,那麼結果就是一個哈希索引。這可以用於列上的平等搜索。 更多信息有關CHECKSUM()
DECLARE @email1 varchar(100) = '[email protected]'
DECLARE @email2 varchar(100) = '[email protected]'
SELECT CASE WHEN CHECKSUM(@email1) = CHECKSUM(@email2) THEN 'Same Email'
ELSE 'Different Email' END
儘管這是一個老帖子,我想使用校驗和解決方案發表意見是很重要的。根據定義,校驗和屬於有限空間,因此具有有限數量的不同值。用32位數字,有4,294,967,295個可能的值。我很想說,當兩個電子郵件地址產生相同的校驗和時,只有4,294,967,295個可能的值可能會導致潛在的衝突。根據Raj的建議,純字符串比較(email1 = email2)可以防止這種衝突,因爲它們本身的電子郵件地址是唯一的。
[http://preshing.com/20110504/hash-collision-probabilities/][2]
,嗯,你並不需要一個UDF來比較兩個字符串是否相等 - 這有什麼錯用'='? – Blorgbeard
通過比較你是指相似還是相等? – Chandu
您的問題表明您知道如何從電子郵件地址獲取域名 - 只需比較這些字符串?或者是一個錯字,你打算說你*不知道? – Blorgbeard