如何在SQL中过滤字符串?

时间:2015-05-04 14:21:04

标签: sql sql-server sql-server-2008

如何在SQL 2008中过滤字符串?

    $("#tabs").append(
            "<div id='tabs-" + tabCounter + "'>" +
                "<div class='divTable'>" +
                    "<div class='divRow'>" +
                        "<div class='divCell'>" +
                            "<div class='editor-label'>" +
                                "@Html.LabelFor(m => m.name)" +
                            "</div>" +
                        "</div>" +
                        "<div class='divCell'>" +
                            "<div class='editor-field'>" +
                                "@Html.TextBoxFor(m => m.employee[0].name)" +
                            "</div>" +
                        "</div>" +
                    "</div>" +

上面的查询返回文件名,即Data20160401.txt。

我只需要获取服务器名称PRODSERVER。

3 个答案:

答案 0 :(得分:1)

创建一个分割字符串的函数

CREATE FUNCTION [dbo].[fnSplitString] 
( 
    @string NVARCHAR(MAX), 
    @delimiter CHAR(1) 
) 
RETURNS @output TABLE(splitdata NVARCHAR(MAX) 
) 
BEGIN 
    DECLARE @start INT, @end INT 
    SELECT @start = 1, @end = CHARINDEX(@delimiter, @string) 
    WHILE @start < LEN(@string) + 1 BEGIN 
        IF @end = 0  
            SET @end = LEN(@string) + 1

        INSERT INTO @output (splitdata)  
        VALUES(SUBSTRING(@string, @start, @end - @start)) 
        SET @start = @end + 1 
        SET @end = CHARINDEX(@delimiter, @string, @start)

    END 
    RETURN 
END

调用函数

select *from dbo.fnSplitString('\\PRODSERVER\D$\EXPORT\Data20160401.txt','\')

输出

PRODSERVER
D$
EXPORT
Data20160401.txt

答案 1 :(得分:1)

DECLARE @path  VARCHAR(50) = '\\PRODSERVER\D$\EXPORT\Data20160401.txt'

Select SubString(@path,3,(CHARINDEX('\',@path,3)-3))

答案 2 :(得分:0)

假设文件的路径始终以\\开头,您可以执行以下操作:

Filename=substring(string,0,charindex(substring(string,2,len(string)-2),'\')

不知道这是否是完全正确的语法,因为我现在不在使用任何sql处理器的计算机上,但它应该做这样的事情:

  1. 获取字符串的子字符串,而不使用前导\\
  2. 获取第3个\的位置,因为这是您不需要的部分开始
  3. 从\\之后的第一个位置抓取您在1中创建的子字符串中的子字符串,直到第3个位置