4

以下のようなフィールドを持つテキスト列があります (小さなサンプルで、多くのバリエーションがあります)。

INSERT INTO #retention1 VALUES ('hello Action=Refer non-action=non-refer')
INSERT INTO #retention1 VALUES ('bye Action=Follow non-action=non-refer')
INSERT INTO #retention1 VALUES ('hello non-action=non-refer Action=compare')

「Action=」の後の単語を見つける必要があります 例 ANSWER : Entry 1: Refer Entry 2: Follow Entry 3: Compare

"Action=" の後のすべての単語が同じ長さである場合、私はそれを行うことができます。残念ながら、すべてのバリエーションの長さは不明です。上記の 3 つのバリエーションだけでなく、アクション後の単語もほぼ常に異なります。

アイデアの提案は大歓迎です。

これは、動作する「Refer」の例にのみ使用したコードです。

BEGIN
DECLARE @P_string nvarchar (100),
@P_variable    nvarchar (100)/*,
@P_return_null nvarchar(100) = 'Y'*/

set @p_string = 'hello Action=Refer non-action=non-refer'
set @p_variable = 'Action'

select substring(@p_string, charindex(upper(@P_variable),upper(@P_string)) +len(@p_variable)+1,5) as trying


END;
4

3 に答える 3

0

少しごまかした大量の文字列処理: 先頭と末尾にスペースを入れて @p_string を拡張します。

DECLARE @P_string nvarchar (100), @P_variable    nvarchar (100)

set @p_variable = ' Action='

set @p_string = ' hello Action=Refer non-action=non-refer '
select substring(substring(@p_string, charindex(upper(@P_variable),upper(@P_string))+1, len(@p_string)-len(@p_variable)),charindex('=',substring(@p_string, charindex(upper(@P_variable),upper(@P_string))+1, len(@p_string)-len(@p_variable)))+1,CHARINDEX(' ', substring(@p_string, charindex(upper(@P_variable),upper(@P_string))+1, len(@p_string)-len(@p_variable)))-LEN(@P_variable))

set @p_string = ' bye Action=Follow non-action=non-refer '
select substring(substring(@p_string, charindex(upper(@P_variable),upper(@P_string))+1, len(@p_string)-len(@p_variable)),charindex('=',substring(@p_string, charindex(upper(@P_variable),upper(@P_string))+1, len(@p_string)-len(@p_variable)))+1,CHARINDEX(' ', substring(@p_string, charindex(upper(@P_variable),upper(@P_string))+1, len(@p_string)-len(@p_variable)))-LEN(@P_variable))

set @p_string = ' hello non-action=non-refer Action=compare '
select substring(substring(@p_string, charindex(upper(@P_variable),upper(@P_string))+1, len(@p_string)-len(@p_variable)),charindex('=',substring(@p_string, charindex(upper(@P_variable),upper(@P_string))+1, len(@p_string)-len(@p_variable)))+1,CHARINDEX(' ', substring(@p_string, charindex(upper(@P_variable),upper(@P_string))+1, len(@p_string)-len(@p_variable)))-LEN(@P_variable))
于 2013-07-17T11:37:38.520 に答える