sql 根据不同数字的分隔符拆分字符串

sql split string based on delimiter with varying numbers

如何将这个字符串 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 地址的性质,分隔符的位置可能会有所不同。

使用 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 Fiddle: http://sqlfiddle.com/#!6/cb36f/3/0

在 SQL 服务器中,您将使用 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