sql >> データベース >  >> RDS >> Sqlserver

MS SQL 2012 で全文検索を使用して特定のテキストをフィルタリングして行を検索する方法

    全文検索とは思えない あなたを助けるでしょう。 /1/ のような専門用語など、フラグメントを探しているようです .

    XML でこれを試してください

     DECLARE @SearchFor VARCHAR(100)='1';
    
     SELECT * 
     FROM SettingsData
     WHERE xmldata.exist(N'//*[contains(text()[1],sql:variable("@SearchFor"))]')=1;
    

    任意のノードの内部 text() をチェックします 検索フレーズが含まれている場合。ただし、1 の任意の値 内部が見つかりました (たとえば、1 を持つ無関係な番号 text()="1" を検索するとよいでしょう。 contains を実行します 文字列の長さが特定の最小値を超えた場合のみ。

    のようなもの

    WHERE xmldata.exist(N'//*[text()[1]=sql:variable("@SearchFor") or(string-length(text()[1])>=3 and contains(text()[1],concat("/",sql:variable("@SearchFor"),"/")))]')=1;
    

    Json は - 今のところ - 文字列にすぎず、解析する必要があります。 v2016 では Microsoft が JSON サポートを導入しましたが、あなたは v2012 を使用しています。 LIKE の問題 JSON 文字列を検索すると、要素の名前の一部として 1 が見つかる可能性があります。残りは上記のとおりです...

     SELECT *
     FROM SettingsData
     WHERE jsondata LIKE '%' + @SearchFor + '%';
    



    1. mysqlでパスワードフィールドを使用してテーブルを作成するにはどうすればよいですか?

    2. MySQL:1日あたり各ユーザーからの1から最大nの投稿を表示する必要があります

    3. EbeanはPlayFramework2で間違ったシーケンス名を探します

    4. Golangで*DB.exec()またはプリペアドステートメントを使用するのはなぜですか?