zoukankan      html  css  js  c++  java
  • Discuz!NT 代码阅读笔记(9)DNT数据库中唯一的用户函数解析

    dnt_split是一个字符串分割函数,输入待分割的字符串和分割符,输出分割后的字符串表

    下边是注释,是自己理解.

    CREATE FUNCTION [dnt_split]   --字符串分割函数

        (

          @splitstring NVARCHAR(4000) ,  --输入需要分割的字符串和分割符

          @separator CHAR(1) = ','

        )

    RETURNS @splitstringstable TABLE ( [item] NVARCHAR(200) )  --以表的形式返回分割后的字符串

    AS

        BEGIN

            DECLARE @currentindex INT

            DECLARE @nextindex INT

            DECLARE @returntext NVARCHAR(200)

            SELECT  @currentindex = 1

           --循环分割字符串。

            WHILE ( @currentindex <= DATALENGTH(@splitstring) / 2 )   --DATALENGTH返回字符串的字节数,一个NVARCHAR字符占2位。除以2表示字符串的字母个数

                BEGIN

                    SELECT  @nextindex = CHARINDEX(@separator, @splitstring,   --CHARINDEX为字符串检索函数,联机丛书上有介绍

                                                   @currentindex)   --@currentindex为搜索的起始位置,

                                                                    --@separator为分割符,@splitstring为待分割的字符串

                                                                    --这一行为找出第一个匹配的位置@nextindex

                    IF ( @nextindex = 0

                         OR @nextindex IS NULL

                       )

                        SELECT  @nextindex = DATALENGTH(@splitstring) / 2 + 1   --如果没有找到,设置位置为@splitstring的最后一位

                    SELECT  @returntext = SUBSTRING(@splitstring, @currentindex,

                                                    @nextindex - @currentindex)

                    INSERT  INTO @splitstringstable    --将找出的结果插入到结果表中

                            ( [item] )

                    VALUES  ( @returntext )

                    SELECT  @currentindex = @nextindex + 1   --移动搜索位置

                END

            RETURN    --返回,跟C# 不一样。不用专门指定返回什么,在函数声明时已经指定了

        END

     

    GO

    Technorati 标签: DNT,字符串分割,函数
  • 相关阅读:
    webpack : 无法加载文件 D: odejs ode_globalwebpack.ps1,因为在此系统上禁止运行脚本。
    TypeError: __WEBPACK_IMPORTED_MODULE_0_react___default.a.createContext is not a function报错处理
    React中import的用法
    antd-react-mobile(踩坑记录)
    [转][C#]BarCodeToHTML
    [转][C#]Environment 类
    [转][easyui]右键菜单
    [转][C#]Web.config 相关配置
    [转]模拟键盘输入
    python3 的 zip
  • 原文地址:https://www.cnblogs.com/zyqgold/p/1772290.html
Copyright © 2011-2022 走看看