1
他の文字列内の文字(またはサブ文字列)の位置を返すSQL Server CHARINDEX
関数を認識しています。それでも、(私自身のUDFを開発しない限り)正規表現のサポートがあることは明らかではありませんでした。SQL Server 2012 - 文字列内の可能な文字セット内の文字の最初の検索
私が探しているのは、文字列内のセット内の任意の文字の最初の位置を見つける機能です。
例:"
は\
の前に表示されますので、
DECLARE @_Source_String NVARCHAR(100) = 'This is "MY" string \ and here is more text' ;
SELECT <some function> (@_Source_String,'"\') ;
これは9
を返す必要があります。一方:\
がx
前にあるので
SELECT <some function> (@_Source_String,'x\') ;
は21
を返す必要があります。
は、この機能/メカニズムが非常に高い頻度で呼び出されるため、のパフォーマンスを追加する必要があります。
ご意見ありがとうございます。
マーティン、美しい(と私のニーズに適し)ソリューション。どうもありがとう!!! (言うまでもなく、それを投票した)。 – FDavidov
Martin、もう1つの質問:どのように '? '文字をエスケープしますか?私が 'x'か']のどちらかを探しているとします。私は 'PATINDEX( '%[x]]]%、...)'と書かなければならないでしょうか? – FDavidov
@FDavidov - [これは残念なことではないと思います](https://connect.microsoft.com/SQLServer/feedback/details/259534/patindex-missing-escape-clause) - CLRが必要になるようです正規表現を使うか、 ']'のすべてのインスタンスを他の文字に置き換えて、代わりにPATINDEXに追加してください。 –