2

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

  1. “服务器\Windows\访问数据库”
  2. “访问数据库\服务器\Windows”

我想在一个查询中选择第一个'\'之后的任何内容 ,在第二个查询中我想选择第二个'\'之后的文本

'\'之间的文本长度不断变化。

我努力了:

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

结果:

SOMECOLUMN
Server
Access Database

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

4

2 回答 2

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]

就这样

于 2013-09-24T07:30:32.537 回答
1

尝试这个:

create table t (val varchar(50))

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

小提琴演示

;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 |
于 2013-09-24T07:31:33.353 回答