sql基于具有不同数字的分隔符拆分字符串

时间:2017-12-13 15:28:31

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

如何将此字符串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地址的性质,它可能会在位置上发生变化。

2 个答案:

答案 0 :(得分:2)

结合使用SUBSTRINGCHARINDEX& LEN

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 :(得分:1)

在SQL Server中,您可以使用Matt的答案中所示的SUBSTRINGCHARINDEX,或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