Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于不同数字分隔符的sql拆分字符串_Sql_Sql Server_Sql Server 2005 - Fatal编程技术网

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

基于不同数字分隔符的sql拆分字符串,sql,sql-server,sql-server-2005,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地址的性质,分隔符的位置可能会有所不同 使用子字符串,CHARINDEX和LEN的组合 SELECT yourfield, SUBSTRING(

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

使用
子字符串
CHARINDEX
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 Fiddle:

在SQL Server中,您可以使用Matt的回答中演示的
子字符串和
CHARINDEX,或者
,如下所示:

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

你在哪里对我来说太快了,我不得不重新写我的答案:-)+1。