zoukankan      html  css  js  c++  java
  • 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

    执行后的查询效果如下:

     

  • 相关阅读:
    VS2010 自动跳过代码现象
    Reverse Linked List II 【纠结逆序!!!】
    Intersection of Two Linked Lists
    Linked List Cycle II
    Remove Nth Node From End of List 【另一个技巧,指针的指针】
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Remove Duplicates from Sorted List
    Linked List Cycle
    Dungeon Game
  • 原文地址:https://www.cnblogs.com/dzy863/p/5056546.html
Copyright © 2011-2022 走看看