zoukankan      html  css  js  c++  java
  • 以连接字符截取字符串

    一些字符串是由"-"连接字符连接。

    想以这个连接字符"-"对字符串时行截取前后字符。

    可以写一个自定义函数:

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    -- =============================================
    -- Author:      Insus.NET
    -- Create date: 2019-05-27
    -- Update date: 2019-05-27
    -- Description: 截取字符串
    -- =============================================
    CREATE FUNCTION [dbo].[svf_CutOutStringWithHyphen]
    (
        @string NVARCHAR(MAX)
    )
    RETURNS @Table TABLE([Front] NVARCHAR(MAX),[Back] NVARCHAR(MAX))
    AS
    BEGIN  
       DECLARE @hyphen VARCHAR(1) = N'-'
        IF @string LIKE '%'+ @hyphen +'%'
        BEGIN
        DECLARE @hyphen_position INT = CHARINDEX(@hyphen, @string)
            INSERT INTO @Table ([Front],[Back])
            SELECT SUBSTRING(@string, 1, @hyphen_position - 1) AS _From,
                   SUBSTRING(@string, @hyphen_position + 1, LEN(@string)- @hyphen_position) AS _To    
        END
        ELSE
        INSERT INTO @Table ([Front],[Back]) VALUES(N'',N'')
        RETURN
    END
    GO
    Source Code

    例子:

    下面有一临时表,存储一些字符:

    CREATE TABLE #T ([ID] INT, [Strings] NVARCHAR(40))
    INSERT INTO #T([ID],[Strings]) VALUES (1,'B-Q'),(2,'23-45'),(3,'H-P'),(4,'ADF'),(5,'ADSF-ASDF-ASDF'),(6,'-ADF-ADF-'),(7,'-SFDG-KLJ-QER-'),(8,'shg-'),(9,'-sdfgs')
    
    SELECT [ID],[Strings] FROM #T
    Source Code


    现使用上面的自定义函数对临时表中[String]字符进行分割。得到的结果如下:

    SELECT [ID],[Strings],[Front],[Back] FROM #T
    CROSS APPLY 
    [dbo].[svf_CutOutStringWithHyphen]([Strings])
    Source Code
  • 相关阅读:
    APICloud框架——获取本地图片信息
    APICloud框架--sublime使用自定义loader
    Felx布局(三)
    Flex布局(二)
    Linux时间与Windows差8个时区的问题解决方法
    警惕javascript代码中的“</script>”!
    字母数字推理题
    “黑客”究竟是什么
    博客园自定义博客侧边栏公告的过滤漏洞
    一行命令实现Android自动关机
  • 原文地址:https://www.cnblogs.com/insus/p/10928734.html
Copyright © 2011-2022 走看看