`
joerong666
  • 浏览: 418330 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

sql 分离字符串获得数组的数据集合 支持两个字符串的分离 包括字符串数组的排序

阅读更多


--根据给定的数据源值,和数据源描述,返回数据集
--数据源值和数据源描述是以一定方式组合的单一字符串
CREATE FUNCTION [dbo].[GetArrayDataSet](@sourceVal nvarchar(4000),@sourceValDescription varchar(8000),@spliter varchar(10))
returns @temp table(elementVal varchar(8000),elementDescription nvarchar(4000),orderNum int)
as
begin
    declare @i int
    declare @j int
    declare @length int
   
    set @length = 0
    set @sourceVal = rtrim(ltrim(@sourceVal))
    set @sourceValDescription =  rtrim(ltrim(@sourceValDescription))
    set @i = charindex(@spliter,@sourceVal)
    set @j = charindex(@spliter,@sourceValDescription)

    while @i >= 1 and @j >= 1
    begin
        set @length = @length + 1
        insert @temp(elementVal,elementDescription,orderNum)
        values(
                    left(@sourceVal,@i - 1),
                    left(@sourceValDescription,@j - 1),
                    @length
                )
        set @sourceVal = substring(@sourceVal,@i + 1,len(@sourceVal) - @i)
        set @sourceValDescription = substring(@sourceValDescription,@j + 1,len(@sourceValDescription) - @j)
        set @i = charindex(@spliter,@sourceVal)
        set @j = charindex(@spliter,@sourceValDescription)
    end

    if @sourceVal <> '' and @sourceValDescription <> ''
    begin
        set @length = @length + 1
        insert @temp values(@sourceVal,@sourceValDescription,@length)
    end
    return
end
GO

select * from GetArrayDataSet('受理$审核$审批','stateInit$stateCheck$stateBatch','$')
--结果集(以表的方式返回):
--elementVal    elementDescription  orderNum
--受理            stateInit           1
--审核            stateCheck          2
--审批            stateBatch          3

分享到:
评论

相关推荐

    大厂面试系列二.pdf

    在函数内定义一个字符数组,并使用gets函数输入字符串时,如果输入超出数组大小,会发生缓冲区溢出,这会导致未定义行为,可能会覆盖内存中的其他数据,包括程序的控制数据,这通常会导致程序崩溃。 快速排序算法是...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例078 从字符串中分离文件路径、 文件名及扩展名 98 实例079 判断手机号的合法性 99 实例080 用字符串构建器追加字符 100 实例081 去掉字符串中的所有空格 101 实例082 汉字与区位码的转换 102 第5章 面向对象技术...

    计算机面试资料总结

    - **跨行查找字符串**:在字符串数组中查找目标字符串。 - **Trie树**:一种用于高效检索字符串的树形数据结构。 **8. 其他** - **主定理与复杂度**:用于分析算法的时间复杂度。 - **静态存储与动态存储**:静态...

    明日科技C#开发入门及项目实战

    实例035 从字符串中分离文件路径、文件名及扩展名 实例036 对字符串进行加密与解密 实例037 开发一个进制转换器 实例038 将字符串的每个字符进行颠倒输出 实例039 根据标点符号对字符串进行分行 实例040 将汉字转换...

    《C#经典编程220例》.(明日科技).【带书签】-共3部分

    实例035 从字符串中分离文件路径、文件名及扩展名 51 实例036 对字符串进行加密与解密 53 实例037 开发一个进制转换器 56 实例038 将字符串的每个字符进行颠倒输出 60 实例039 根据标点符号对字符串进行分行 61 实例...

    Linq入门学习教程

    假设有一个字符串数组,我们想要找出其中所有的非静态方法名,可以采用以下步骤: ```csharp MethodInfo[] methods = typeof(string).GetMethods(); var result = from m in methods where m.IsStatic != true ...

    C#编程经验技巧宝典

    72 &lt;br&gt;0103 如何进行字节数组和字符串的相互转换 72 &lt;br&gt;0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73 &lt;br&gt;4.2 获取字符串信息 73 &lt;br&gt;0105 如何获得一个字符串的长度 ...

    C#应用实践教程

    - **关系运算符**:用于比较两个值。 - **if、switch选择结构**:根据条件选择执行不同的代码块。 - **for循环结构与程序调试技术** - **for循环**:一种常用的循环结构,用于重复执行一段代码多次。 - **程序...

    DotNet面试题汇总.pdf

    `仅创建了一个字符串对象,因为字符串字面量在编译时会被优化成直接使用常量池中的实例。 5. **Abstract Class vs Interface**:抽象类可以包含部分实现(非抽象方法),而接口只包含签名(方法声明)。抽象类可以...

Global site tag (gtag.js) - Google Analytics