Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak uzyskać wyraźną listę słów używanych we wszystkich rekordach pola przy użyciu MS SQL?

Nie sądzę, że możesz to zrobić za pomocą SELECT. Najlepszą szansą jest napisanie funkcji zdefiniowanej przez użytkownika, która zwraca tabelę ze wszystkimi słowami, a następnie wykonanie na niej polecenia SELECT DISTINCT.

Zastrzeżenie: Funkcja dbo.Split pochodzi z 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz funkcję wartościującą tabelę w SQL Server

  2. Jak połączyć wiele wierszy w listę rozdzielaną przecinkami w SQL Server 2005?

  3. Eksportuj zestaw wyników procedury składowanej do programu Excel w programie SSMS

  4. Jaki jest najlepszy sposób na pisanie wielką literą każdego słowa w ciągu w SQL Server

  5. Jak używać klauzuli Where w instrukcji Select w SQL Server — samouczek SQL Server / TSQL, część 109