2

2つのクエリで文字列の一部を選択したい

  1. 「サーバー\Windows\Accessデータベース」
  2. 「データベース\サーバー\Windowsにアクセス」

1 つのクエリで最初の '\' の後にあるものをすべて選択し、2 番目の クエリで 2 番目の '\' の後のテキストを選択したい

「\」の間で、テキストの長さが変化し続けます。

私が試してみました:

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

結果:

SOMECOLUMN
Server
Access Database

Sql フィドル: 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]

2番目の場合:2番目の「\」の後に文字列を取得したい:これには、以下のクエリを使用できます

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 に答える