タグ付けされた質問 「string-searching」

3
文字列の先頭ではなく中央を検索するとき、それは何と呼ばれますか?
仲間の開発者とのコミュニケーションを改善するために、語彙を磨き上げようとしています。'running%'文字列内のどこからでも最初から文字列を検索する必要があるかどうかを議論しているサイトには、いくつかの場所があります'%running%。 ファジーとは「run」、「runing」[sic]、「runed」[sic]という単語の形式を変更することを意味するため、中間検索を「ファジー」と呼んでいます。 文字列の先頭を検索し、文字列の中央を検索するための正しい用語は何ですか?

7
別の文字列内の文字列のすべての位置を見つける方法
patindexテーブルまたは変数ですべてのポジションを見つけるにはどうすればよいですか? declare @name nvarchar(max) set @name ='ali reza dar yek shabe barani ba yek ' + 'dokhtare khoshkel be disco raft va ali baraye' + ' 1 saat anja bud va sepas... ali...' select patindex('%ali%',@name) as pos これは戻ります1が、すべての結果が必要です。例: pos === 1 74 113

5
ワイルドカード「[]」を使用して、](角かっこ)とPATINDEXを一致させる
T-SQL †でカスタムJSONパーサーを作成しています。 私のパーサーのために、PATINDEXトークンのリストからトークンの位置を計算する関数を使用しています。私の場合のトークンはすべて1文字で、次のものが含まれています。 {} []:、 通常、与えられたいくつかの文字の(最初の)位置を見つける必要があるときは、次のPATINDEXような関数を使用します。 PATINDEX('%[abc]%', SourceString) この関数はその後、私の最初の位置を与えるaか、bまたはcに-最初に発見される早い方- SourceString。 今、私の場合の問題は]キャラクターに関連しているようです。文字リストで指定するとすぐに、たとえば次のようになります。 PATINDEX('%[[]{}:,]%', SourceString) 関数が一致を見つけられないため、私の意図したパターンは明らかに壊れています。私が最初に脱出する方法が必要ですように見えます]ので、PATINDEX検索文字ではなく、特別なシンボルの一つとして扱い、それを。 私は同様の問題について尋ねるこの質問を見つけました: LIKE演算子と角かっこが必要です ただし、その場合、]単に1文字であり、大括弧なしで指定できるため、大括弧で指定する必要はありません。エスケープ使用しない別の解決策は、だけのために働くLIKEといないためPATINDEX、それが使用しているため、ESCAPE後者によって前者としないことによってサポートされ、副次句を。 だから、私の質問は、ワイルドカードを使用してを探す方法はありますか?]PATINDEX[ ]または、他のTransact-SQLツールを使用してその機能をエミュレートする方法はありますか? 追加情報 上記PATINDEXの[…]パターンで使用する必要があるクエリの例を次に示します。ここのパターンは(多少ではありますが)機能し]ます。文字が含まれていないためです。私もそれを使用する必要があり]ます: WITH data AS (SELECT CAST('{"f1":["v1","v2"],"f2":"v3"}' AS varchar(max)) AS ResponseJSON), parser AS ( SELECT Level = 1, OpenClose = 1, P = p.P, S = SUBSTRING(d.ResponseJSON, 1, NULLIF(p.P, 0) - …

2
charindex関数の長い文字列を分割/保存する最速の方法
1 TBの数字列があります。12文字の数字のシーケンスが与えられた場合、元の文字列(charindex関数)でこのシーケンスの開始位置を取得します。 SQL Serverを使用して1GBの文字列と9桁の部分文字列でこれをテストし、文字列をとして保存しましたvarchar(max)。Charindex10秒かかります。1 GBの文字列を900バイトのオーバーラップチャンクに分割し、バイナリ照合でchunkofstringを使用してテーブル(StartPositionOfChunk、Chunkofstring)を作成すると、インデックス作成に1秒未満かかります。10GB、10桁の部分文字列の後者の方法では、charindexが1.5分に上昇します。より高速な保存方法を見つけたいのですが。 例 数字列:0123456789-検索する部分文字列345 charindex( '345'、 '0123456789')は4を与えます 方法1:これを、1つの列で構成されるSQL Serverテーブルstrtableに格納しcolstr、実行できます。 select charindex('345',colstr) from strtable 方法2:または、元の文字列を分割することにより、テーブルstrtable2(pos、colstr1)を作成できます。2; 123 | 3; 234 asoそして、クエリを select pos from strtable2 where colstr1='345' 方法3:元の文字列をより大きなチャンクに分割することで、テーブルstrtable2(pos2、colstr2)を作成できます1; 01234 | 4; 34567 | 7、6789、次いで select pos2+charindex('345',colstr2) from strtable2 where colstr2 like '%345%' 最初の方法が最も遅いです。 2番目の方法では、データベースのストレージサイズが大きくなります。 方法3:バイナリ照合でcolstr2の長さを900バイトに設定し、この列にインデックスを作成すると、1GBの文字列と9桁の部分文字列の検索に1秒かかります。10GBの文字列と10桁の部分文字列の場合、istには90秒かかります。 これをより速くする他のアイデア(おそらく、文字列を使用することによって、文字列は長整数の数字で構成されます...)? 検索では常に、1 TBの数字列の12桁の部分文字列が検索されます。SQLServer 2017 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.