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
  • 相关阅读:
    【费用流】【CODEVS】1227 方格取数2
    【CODEVS】1034 家园
    【BZOJ】1066: [SCOI2007]蜥蜴
    【最大流】【CODEVS】1993 草地排水
    【HDU】2191 多重背包问题
    【TYVJ】1520 树的直径
    【BZOJ】1984 月下“毛景树”
    【BZOJ】1588: [HNOI2002]营业额统计
    【NOI】2004 郁闷的出纳员
    【POJ】2892 Tunnel Warfare
  • 原文地址:https://www.cnblogs.com/insus/p/10928734.html
Copyright © 2011-2022 走看看