2016-11-23 110 views
-1

我想从列中的字符串获取服务器名称。
从sql表列中的服务器路径获取服务器名称

CREATE TABLE #Sample(ServerPath varchar(50)) 
    GO 
    INSERT INTO #Sample (ServerPath) VALUES ('\\TestServer1\Test') 
    INSERT INTO #Sample (ServerPath) VALUES ('\\TestServer2\Test') 
    INSERT INTO #Sample (ServerPath) VALUES ('\\TestServer3\Test') 
INSERT INTO #Sample (ServerPath) VALUES ('TestServer4) 
    SELECT * FROM #Sample 
    GO 
    DROP TABLE #Sample`enter code here` 

我要像串输出双斜线之间第一单斜杠

TestServer1 
TestServer2 
TestServer3 

什么SQL命令来执行或在SQL这给了我预期的结果正则表达式。

回答

1

这不需要是正则表达式(按照您的标签)。只要使用这样的东西。

CREATE TABLE #Sample(ServerPath varchar(50)) 
INSERT INTO #Sample (ServerPath) 
VALUES 
('\\TestServer1\Test') 
,('\\TestServer2\Test') 
,('\\TestServer3\Test') 

SELECT 
SUBSTRING(ServerPath,3,CHARINDEX('\',ServerPath,3)-3) Result 
FROM #Sample 

Result 
TestServer1 
TestServer2 
TestServer3 

这是假设它总是带有双反斜线

开始如果你有没有反斜杠数据,然后使用这个首先检查;

CREATE TABLE #Sample(ServerPath varchar(50)) 
INSERT INTO #Sample (ServerPath) 
VALUES 
('\\TestServer1\Test') 
,('\\TestServer2\Test') 
,('\\TestServer3\Test') 
,('TestServer4') 

SELECT 
CASE 
    WHEN CHARINDEX('\\',ServerPath) = 0 
     THEN ServerPath 
    ELSE SUBSTRING(ServerPath,3,CHARINDEX('\',ServerPath,3)-3) 
END Result 
FROM #Sample 
GO 
DROP TABLE #Sample 

Result 
TestServer1 
TestServer2 
TestServer3 
TestServer4 
+0

嗨@Rich,谢谢你,但它给了我下面的错误。 “传递给LEFT或SUBSTRING函数的长度参数无效。” – Aamir

+0

你有没有反斜杠的数据?另外,任何不以双反斜杠开始的数据? –

+0

是的,我有像D:\ TestFolder在同一列 – Aamir