SQL Server中字符串轉化為GUID的標量函數實現


    還是工作中遇到的需求,有時候和外部的系統對接,進行數據的核對功能,外部的系統有時候主鍵字段列數據類是UNIQUEIDENTIFER(GUID)類型的字符串格式,去除了GUID格式中的分隔符“-”。基於上面的原因,在數據庫中可能要將這類的“GUID去格式化的字符串”轉化為GUID,便於和本系統的相關聯數據進行來核對。
 
SQL Server中的字符串轉化為GUID的T-SQL代碼如下:
 1 IF OBJECT_ID(N'dbo.ufn_GUID', 'FN') IS NOT NULL
 2 BEGIN
 3     DROP FUNCTION dbo.ufn_GUID;
 4 END
 5 GO
 6 
 7 --==================================
 8 -- 功能: 字符串轉換為GUID
 9 -- 說明: 1、不足32為的字符串則轉換為0x0
10 -- 作者: XXX
11 -- 創建: XXXX-XX-XX
12 -- 修改: XXXX-XX-XX XXX XXXXXX
13 -- 調用: SET @uniGuid = dbo.fn_GUID('31F74CD6EDE94B19BC4C29A8A7791DC7')
14 --==================================
15 CREATE FUNCTION dbo.ufn_GUID
16 (
17     @chnStr NCHAR(32)        -- 字符串
18 ) RETURNS UNIQUEIDENTIFIER
19     --$Encode$--
20 AS
21 BEGIN
22     -- 初始化處理NULL時的變量@chnStr的默認值
23     SET @chnStr = ISNULL(@chnStr, N'');
24 
25     IF LEN(@chnStr) < 32
26     BEGIN
27         RETURN 0x0;
28     END
29 
30     RETURN LEFT(@chnStr, 8) + '-' + SUBSTRING(@chnStr, 9 ,4) + '-' + SUBSTRING(@chnStr, 13, 4) + 
31             '-' + SUBSTRING(@chnStr, 17 ,4) + '-' + SUBSTRING(@chnStr, 21, 12);
32 END
33 GO

 

演示該標量函數效果的T-SQL代碼如下:

1 SELECT dbo.ufn_GUID('31F74CD6EDE94B19BC4C29A8A7791DC7') AS GuidVule;
2 GO

執行后的查詢效果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM