2017-11-11 15 views
1

単語 'by'と文字 '。'の間に部分文字列を抽出しようとしましたが、 'by'または '。'その結果私はこのサイトで見つけたいくつかの部分文字列とpatindexを試しましたが、望みの結果を得ることはできません。ご提案いただきありがとうございます。単語と文字の間の部分文字列を抽出する

サンプルデータ:12:31 PM by Smith、Jim。 希望の結果:スミス、ジム

+1

あなたはすでに試してみましたが、あなたの試みを投稿する必要があります。この努力を示してください。 –

+0

はい、特にそうでなければ、あなたがすでに試したことを投稿して好きではないかもしれないので、時間を無駄にしてしまうからです。 –

+0

フィードバックいただきありがとうございます。私が試したことはうまくいかず、混乱につながると思った。私は将来これを含めることにします。 – Shawn

答えて

0

ここでは可能な解決策は、ほとんどの場合スイートです。見てください:

select 
substring(s,CHARINDEX(s1,s)+len(s1)+1,charindex(s2,s)-len(s2)-(CHARINDEX(s1,s)+len(s1))) 
from (
    select 
    '12:31 PM by Smith, Jim.' as s, 
    'by' as s1, 
    '.' as s2 
) as a 
+0

お返事ありがとうございます。実際にテーブルをプラグインすると、無効な長さパラメータエラーが発生します。 (CHARINDEX(s1、s)+ len(s1))) から (select())を選択します。 oc.commenttext S、 としてS1、 として「で」「」copia.copia_sf.OrderedPanelCommentのOC oc.createstamp> 1510434000000から S2など)のようなそのようなサブストリングがない場合は場合であるかもしれない – Shawn

+0

として'by'または '。' WHEREまたはCASE式を持つロジックで追加フィルタが必要です。すべてのデータを見ずに言うのは難しいです。 – Alex

+0

初心者の方のご援助とありがとうございます。あなたはまさに正しいです、私は私が関心を持っている特定の部分文字列だけを含むようにコメントをフィルタリングしました。それは今、望ましい出力を返しています。 – Shawn

0

私はこのためにCHARINDEXを使用したいので、私はあなたがキーボードで入力することができるものであるべきではないASCII値6、との「で」単語を置き換えます。

DECLARE @newstring varchar(100) = (SELECT REPLACE('12:31 PM by Smith, Jim.', 'by', char(6))) 

SELECT SUBSTRING(@newstring 
       , CHARINDEX(CHAR(6), @newstring) + 1 
       , CHARINDEX('.', @newstring) - CHARINDEX(CHAR(6), @newstring) - 1 
       ) 

は、出力を提供します:

Smith, Jim 
関連する問題