• sql and csharp: Split Function


    T-SQL:

    declare @int int,@prov int,@city int,@str nvarchar(500)
    set @str='天河麗特青春:中國廣東省廣州市天河區天河路623號天河娛樂廣場麗特青春百貨一樓,塗聚文'
    select @int=charindex(':',@str) 
    select @prov=charindex('省',@str) 
    select @city=charindex('市',@str) 
    select substring(@str,0,@int)
    select substring(@str,@int+1,@prov-(@int))
    select substring(@str,@int+1,@city-(@int))
    
    declare @int int,@prov int,@city int,@str nvarchar(500),@branch varchar(20)
    select @branch='HDF'
    select @int=charindex(':',ShopAddress)  from  Intranet.dbo.LC where BranchNO=@branch
    select @prov=charindex('省',ShopAddress)  from  Intranet.dbo.LC where BranchNO=@branch
    select @city=charindex('市',ShopAddress)  from  Intranet.dbo.LC where BranchNO=@branch
    select substring(ShopAddress,0,@int) from  Intranet.dbo.LC where BranchNO=@branch
    select substring(ShopAddress,@int+1,@prov-(@int)) from  Intranet.dbo.LC where BranchNO=@branch
    select substring(ShopAddress,@int+1,@city-(@int)) from  Intranet.dbo.LC where BranchNO=@branch
    
    select substring(ShopAddress,0,charindex(':',ShopAddress)) from  Intranet.dbo.LC
    
    ---中國國內分店名稱
    select BranchNO+'--'+CompanyName+substring(ShopAddress,0,charindex('市',ShopAddress)+1) from  Intranet.dbo.LC
    
    select BranchNO,CompanyName,ShopAddress  substring(@str,@int+1,@city-(@int)) from Intranet.dbo.LC
    
    drop function [dbo].getVipExamBranchName
    go
    ---
    create function [dbo].getVipExamBranchName
    (
    	@branch varchar(20),
    	@key nvarchar(20),
    	@citykey nvarchar(20)
    )
    RETURNS NVARCHAR(200)
    AS
    BEGIN
    declare @int int,@prov int,@city int,@str nvarchar(500),@branchcode nvarchar(20),@re NVARCHAR(100),@cityname nvarchar(500)
    select @int=charindex(@key,ShopAddress)  from  Intranet.dbo.LC where BranchNO=@branch--':'
    --select @prov=charindex('省',ShopAddress)  from  Intranet.dbo.LC where BranchNO=@branch
    select @city=charindex(@citykey,ShopAddress)  from  Intranet.dbo.LC where BranchNO=@branch--'市'
    select @branchcode=substring(ShopAddress,0,@int) from  Intranet.dbo.LC where BranchNO=@branch
    --select substring(ShopAddress,@int+1,@prov-(@int)) from  Intranet.dbo.LC where BranchNO=@branch
    if(@city>@int)
    select @cityname=substring(ShopAddress,@int+1,@city-(@int)) from Intranet.dbo.LC where BranchNO=@branch select @re=@branchcode+'--'+@cityname RETURN @re end GO select [dbo].getVipExamBranchName ('HDF',':','市') ---函數 CREATE FUNCTION [dbo].[func_Split] ( @DelimitedString varchar(8000), @Delimiter varchar(100) ) RETURNS @tblArray TABLE ( ElementID int IDENTITY(1,1), -- Array index Element varchar(1000) -- Array element contents ) AS BEGIN -- Local Variable Declarations -- --------------------------- DECLARE @Index smallint, @Start smallint, @DelSize smallint SET @DelSize = LEN(@Delimiter) -- Loop through source string and add elements to destination table array -- ---------------------------------------------------------------------- WHILE LEN(@DelimitedString) > 0 BEGIN SET @Index = CHARINDEX(@Delimiter, @DelimitedString) IF @Index = 0 BEGIN INSERT INTO @tblArray (Element) VALUES (LTRIM(RTRIM(@DelimitedString))) BREAK END ELSE BEGIN INSERT INTO @tblArray (Element) VALUES (LTRIM(RTRIM(SUBSTRING(@DelimitedString, 1,@Index - 1)))) SET @Start = @Index + @DelSize SET @DelimitedString = SUBSTRING(@DelimitedString, @Start , LEN(@DelimitedString) - @Start + 1) END END RETURN END --測試 DECLARE @SQLStr varchar(100) SELECT @SQLStr = 'Mickey Mouse, Goofy, Donald Duck, Pluto, Minnie Mouse' SELECT * FROM dbo.func_split(@SQLStr, ',')

     csharp:

     /// <summary>
            /// 分割字符串
            /// 塗聚文
            /// 
            /// </summary>
            /// <param name="str"></param>
            /// <param name="key"></param>
            /// <returns></returns>
            public ArrayList getSplit(string str,char key)
            {
                ArrayList alist = new ArrayList();
    
                string[] sArray = str.Split(key);
    
                foreach (string i in sArray)
                {
                    
                    alist.Add(i.ToString());
                }
                return alist;
            }
            /// <summary>
            /// 正則表達式分割字符串
            /// </summary>
            /// <param name="str"></param>
            /// <param name="key"></param>
            /// <returns></returns>
            public ArrayList getRegexSplit(string str, string key)
            {
                ArrayList alist = new ArrayList();
                string[] resultString = Regex.Split(str, key, RegexOptions.IgnoreCase);
                foreach(string i in resultString)
                {
                    alist.Add(i.ToString());
                }
                return alist;
            }
    
  • 相关阅读:
    Step By Step(Lua-C API简介)
    Step By Step(Lua系统库)
    复制控制( 下 ) --- 自定义析构函数
    复制控制( 中 ) --- 重载赋值运算符
    复制控制( 上 ) --- 自定义复制函数
    泛型算法结构
    流迭代器 + 算法灵活控制IO流
    一个文本查询程序的实现
    multimap容器和multiset容器中的find操作
    实用的关联容器
  • 原文地址:https://www.cnblogs.com/geovindu/p/3559487.html
Copyright © 2020-2023  润新知