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,字符串分割,函数
  • 相关阅读:
    ThinkPHP5+Bootstrap的极速后台开发框架。
    window 下要运行php,需要编辑php环境变量
    Mui 底部导航切换
    chrome 监听touch类事件报错:无法被动侦听事件preventDefault
    HBuilder开发MUI web app溢出页面上下无法滚动问题
    D建立app项目(mui)
    宝塔linux面板,phpmyadmin进不去的处理方法
    mysql密码重置
    mysql5.6安装以及密码重置
    linux安装软件命令
  • 原文地址:https://www.cnblogs.com/zyqgold/p/1772290.html
Copyright © 2011-2022 走看看