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

MS SQLを使用してすべてのフィールドレコードで使用されている単語の個別のリストを取得するにはどうすればよいですか?

    SELECTでこれができるとは思いません。最良のチャンスは、すべての単語を含むテーブルを返すユーザー定義関数を作成してから、そのテーブルでSELECTDISTINCTを実行することです。

    免責事項: 関数dbo.Split http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=50648

    からです
    CREATE TABLE test
    (
        id int identity(1, 1) not null,
        description varchar(50) not null
    )
    
    INSERT INTO test VALUES('The dog jumped over the fence')
    INSERT INTO test VALUES('The giant tripped on the fence')
    
    CREATE FUNCTION dbo.Split
    (
        @RowData nvarchar(2000),
        @SplitOn nvarchar(5)
    )  
    RETURNS @RtnValue table 
    (
        Id int identity(1,1),
        Data nvarchar(100)
    ) 
    AS  
    BEGIN 
        Declare @Cnt int
        Set @Cnt = 1
    
        While (Charindex(@SplitOn,@RowData)>0)
        Begin
            Insert Into @RtnValue (data)
            Select 
                Data = ltrim(rtrim(Substring(@RowData,1,Charindex(@SplitOn,@RowData)-1)))
    
            Set @RowData = Substring(@RowData,Charindex(@SplitOn,@RowData)+1,len(@RowData))
            Set @Cnt = @Cnt + 1
        End
    
        Insert Into @RtnValue (data)
        Select Data = ltrim(rtrim(@RowData))
    
        Return
    END
    
    CREATE FUNCTION dbo.SplitAll(@SplitOn nvarchar(5))
    RETURNS @RtnValue table
    (
        Id int identity(1,1),
        Data nvarchar(100)
    )
    AS
    BEGIN
    DECLARE My_Cursor CURSOR FOR SELECT Description FROM dbo.test
    DECLARE @description varchar(50)
    
    OPEN My_Cursor
    FETCH NEXT FROM My_Cursor INTO @description
    WHILE @@FETCH_STATUS = 0
    BEGIN
        INSERT INTO @RtnValue
        SELECT Data FROM dbo.Split(@description, @SplitOn)
       FETCH NEXT FROM My_Cursor INTO @description
    END
    CLOSE My_Cursor
    DEALLOCATE My_Cursor
    
    RETURN
    
    END
    
    SELECT DISTINCT Data FROM dbo.SplitAll(N' ')
    


    1. AndroidSQLiteの挿入または更新

    2. android.database.CursorIndexOutOfBoundsException

    3. 行の目標、パート3:アンチ結合

    4. LIKE'%...%'ワイルドカードクエリのPL/SQLパフォーマンスチューニング