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

テキスト列の単語の出現回数に関するms sqlクエリ

    テーブル値関数を作成して単語を解析し、それを qQuestion に対するクエリに結合できます。スキーマでは、varchar(8000) を使用することをお勧めします または varchar(max) text の代わりに .それまでの間、次の手順で作業を開始してください:

    create function [dbo].[fnParseWords](@str varchar(max), @delimiter varchar(30)='%[^a-zA-Z0-9\_]%')
    returns @result table(word varchar(max))
    begin
        if left(@delimiter,1)<>'%' set @delimiter='%'[email protected];
        if right(@delimiter,1)<>'%' set @delimiter+='%';
        set @str=rtrim(@str);
        declare @pi int=PATINDEX(@delimiter,@str);
    
        while @pi>0 begin
            insert into @result select LEFT(@str,@pi-1) where @pi>1;
            set @str=RIGHT(@str,len(@str)[email protected]);
            set @pi=PATINDEX(@delimiter,@str);
        end
    
        insert into @result select @str where LEN(@str)>0;
        return;
    end
    go
    
    select COUNT(*)
    from webqueries q
    cross apply dbo.fnParseWords(cast(q.qQuestion as varchar(max)),default) pw
    where pw.word not in ('and','is','a','the'/* plus whatever else you need to exclude */)
    



    1. MySQLクエリORDERBY特定の値を他の値の前に

    2. Postgres/PostgreSQLテーブルとそのインデックスのディスクサイズをどのように見つけますか

    3. SET IDENTITY_INSERT postgresql

    4. MySQLエクスポートジョブへのSqoopエクスポートがtool.ExportToolに失敗しましたが、レコードを取得しました