我想從UNIQUE KEY約束「UQ_Email」的選擇捕獲的值只使用內置在T-SQL
衝突只提取電子郵件。不能在對象 'dbo.User'中插入重複密鑰。重複的鍵值是([email protected])。 該聲明已被終止。
in DescriptionError column。
在C#是的幾行代碼,但我想知道是否有可能趕上只是用T-SQL內置函數僅的([email protected])部分。
我曾嘗試:
SELECT SUBSTRING(DescriptionError,NULLIF(PATINDEX('%@email.com)%',DescriptionError) - 15,1),35)
as UserEmail
FROM ErrorLog
order by DateInserted desc
這工作,但我必須猜測的開始/結束長度。
UPDATE:
只是要清楚,DescriptionError列包含各種錯誤日誌(如預期的錯誤日誌表)和括號比電子郵件裏面不同的值。
所以你想解析TSQL中的錯誤消息並提取電子郵件地址?由於地址位於兩個括號之間,爲什麼您需要「猜測」開始/結束位置? – Pondlife 2013-04-04 15:53:11
是的。我知道它在括號之間。你如何在PATINDEX中寫入REGEX來捕獲它? – 2013-04-04 15:57:13
TSQL沒有正則表達式的支持,但你的問題已經在這裏回答了:[如何從特定字符之間的字段獲取子字符串](http://stackoverflow.com/questions/8503345/how-to-take-substring-from-字段之間的特定字符) – Pondlife 2013-04-04 15:58:18