带有charIndex的SQL子字符串

时间:2013-09-24 07:20:22

标签: sql-server-2008

我想在两个查询中选择一个字符串的一部分

  1. “服务器\ Windows \ Access数据库”
  2. “Access Database \ Server \ Windows”
  3. 我想在一个查询中选择第一个'\ n 之后的内容 在第二个查询中,我想在第二个'\ _

    之后选择文本 '\'之间

    文本的长度不断变化。

    我试过了:

    SELECT Somecolumn=Substring(column1, 0, Charindex('\', column1, 1)) 
    FROM   dbo.sometable 
    

    结果:

    SOMECOLUMN
    Server
    Access Database
    

    Sql-Fiddle:http://sqlfiddle.com/#!3/f0458/1

2 个答案:

答案 0 :(得分:2)

要在第一个“\”之后获取字符串,您可以使用以下查询:

declare @residence varchar(200)
set @residence='Server \ Windows \ Access Database'
select left(@residence, CHARINDEX('\',@residence)-1) AS [Result]

和第二个:你想在第二个“\”之后得到字符串:为此你可以使用下面的查询

select RIGHT(@residence, CHARINDEX('\', REVERSE('\' + @residence)) - 1) AS [Result]

那就是

答案 1 :(得分:1)

试试这个:

create table t (val varchar(50))

insert into t
select 'Server \ Windows \ Access Database'
union all
select 'Access Database \ Server \ Windows'

<强> Fiddle demo

;with cte as (

  select charindex('\',val,0) index1,
              charindex('\',val, charindex('\',val,0)+1) index2
  from t        
)
select val, right(val, len(val) - index1) first,
            right(val, len(val) - index2) second
from cte

|                      FIRST |           SECOND |
-----------------------------|------------------|--
|  Windows \ Access Database |  Access Database |
|           Server \ Windows |          Windows |