T-SQL 查询,用于获取两个特殊字符之间的字符串



我想在两个特殊字符之间提取一个单词。我尝试使用修剪和子字符串函数,但结果不是预期的。

输入:

viewpointopsLeslie.cullum.7M5 

所需输出:

Leslie.cullum

我尝试从表中select SUBSTRING(c2,0,CHARINDEX('',c2))使用此查询将 viewpointops\ 保存在变量中,其余输入也是如此。这是一个很长的查询,也不是一个有效的查询。

提前谢谢。

也许:

DECLARE @string VARCHAR(100) = ' viewpointopsLeslie.cullum.7M5';
SELECT txt = SUBSTRING(s.s1, 1, CHARINDEX('.', s.s1, d.d1)-1)
FROM (VALUES (SUBSTRING(@string, CHARINDEX('',@string)+1, 8000))) s(s1)
CROSS APPLY (VALUES (CHARINDEX('.',s.s1)+1)) d(d1);

如果模式与示例有些一致

DECLARE @S VARCHAR(100) = ' viewpointopsLeslie.cullum.7M5';
select parsename(replace(parsename(@S,3),'','.'),1)+'.'+parsename(@S,2)

返回

Leslie.cullum

如果从表中提取数据,我会这样做。

DECLARE @data TABLE ( [value] VARCHAR(255) );
INSERT INTO @data ( [value] ) VALUES ( ' viewpointopsLeslie.cullum.7M5' );
SELECT
    SUBSTRING( 
        x.val -- value to parse.
        , 1   -- starting position.
        , LEN( x.val) - CHARINDEX( '.', REVERSE( x.val ) ) -- gets the length of the value to return.
    ) AS MyParsedVal
FROM ( 
    -- return everything after the backslash for easier parsing ( assumes there is only 1 as in your example ).
    SELECT 
        SUBSTRING( [value], CHARINDEX( '', [value] ) + 1, CHARINDEX( '', REVERSE( [value] ) ) ) AS val
    FROM @data
) AS x;

返回

+---------------+
|  MyParsedVal  |
+---------------+
| Leslie.cullum |
+---------------+

相关内容

  • 没有找到相关文章

最新更新