【问题标题】:sql split string based on delimiter with varying numberssql 根据具有不同数字的分隔符拆分字符串
【发布时间】:2018-05-27 13:29:32
【问题描述】:

如何将此字符串10.159.101.0-10.159.101.255 拆分为两个字符串?

我可以在Mysql中这样实现:

 SELECT SUBSTRING_INDEX('10.159.101.0-10.159.101.255','-',1)as string1

如何在 SQL 中完成同样的事情?我想根据- 分隔符将IP 范围分成两个字符串,由于IP 地址的性质,该分隔符的位置可能会有所不同。

【问题讨论】:

    标签: sql sql-server sql-server-2005


    【解决方案1】:

    使用SUBSTRINGCHARINDEXLEN 的组合。

    SELECT yourfield,
    SUBSTRING(yourfield, 1,CHARINDEX('-', yourfield)-1) LEFTSIDE,
    SUBSTRING(yourfield, CHARINDEX('-', yourfield)+1, LEN(yourfield)) RIGHTSIDE
    FROM yourtable
    

    输出

    yourfield                   LEFTSIDE      RIGHTSIDE
    10.159.101.0-10.159.101.255 10.159.101.0  10.159.101.255
    

    SQL 小提琴:http://sqlfiddle.com/#!6/cb36f/3/0

    【讨论】:

    • 你对我来说太快了,我不得不重写我的答案:-) +1。
    【解决方案2】:

    在 SQL Server 中,您将使用 SUBSTRINGCHARINDEX,如 Matt 的回答中所示,或 LEFTRIGHT,如下所示:

    DECLARE @string varchar(50);
    SET @string = '10.159.101.0-10.159.101.255';
    SELECT LEFT(@string, CHARINDEX('-', @string)-1) As First,
           RIGHT(@string, LEN(@string) - CHARINDEX('-', @string)) As Second
    

    【讨论】:

      猜你喜欢
      • 2019-09-19
      • 2019-02-06
      • 2011-08-04
      • 2013-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 2012-10-23
      相关资源
      最近更新 更多