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
  • 相关阅读:
    IOS 获取时间的问题
    JQ 点赞
    截取字符串第一个空格前的字符
    JQ 的一些方法
    匿名函数var a =function(){}和function a(){}的区别
    完美支持中文编程的 Emacs 配置文件 .emacs
    linux find 命令忽略某个或多个子目录的方法
    Linux下如何用date设置时间
    nagios的监控代码!
    shell脚本监控apache进程数和oracle连接数
  • 原文地址:https://www.cnblogs.com/insus/p/10928734.html
Copyright © 2011-2022 走看看