2017-05-12 10 views
-1

私は、文字列のように見える、2つの文字の間にある文字列の一部を抽出しようとしている -2つの文字の間にあるSQL内の文字列の抽出部分が、同じ文字が複数ある

例/ EXMPL/(太字)BBASIC/ /例

私は別の列に移動しようとしていたテキストは、3番目と4番目の間のテキストの4番目のセクションである「/」

+7

どのRDBMSを使用していますか? –

+0

'split_part(the_column、 '/'、4)' –

+0

正解はRDBMS固有のものです。 RDBMSが何を使用するかを知らずにこの質問に答えることは、純粋な推測です。 –

答えて

0

DBMSを知らず、私は内蔵の分割関数があるかどうかわからないrはありません。 SQL Server 2008のR2は、スプリット機能を持っていないので、私はそれをこのように実行します。where id = 4手段を使用して

declare @str varchar(max) = 'example/example/bbasic/eXaMpLe/example', @delim char(1) = '/' 

;with vars(id, _start, _end) as 
(
    select 1, cast(1 as bigint), charindex(@delim, @str) 

    union all 

    select id + 1, _end + 1, charindex(@delim, @str, _end + 1) 
    from vars 
    where _end > 0 
) 
select id, cast(substring(@str, _start, case when _end > 0 then _end - _start else len(@str) - _start + 1 end) as varchar(max)) as value 
from vars 
where id = 4 
option (MAXRECURSION 0) 

は、第三/区切り文字の後に第四の要素を引き出します。このSQLは次の結果を返します。

id value 
--- -------- 
4 eXaMpLe 
関連する問題