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

単一のテーブルからキーワードに基づいて関連記事を選択する

    Alter FUNCTION [dbo].[uf_SplitKeywords] 
       (  @DELIMITER VARCHAR(5), 
          @LIST      VARCHAR(MAX) 
       ) 
       RETURNS @TABLEOFVALUES TABLE 
          (  ROWID   int IDENTITY(1,1), 
             [VALUE] VARCHAR(MAX) 
          ) 
    AS 
       BEGIN
       Declare @Pos int
       While LEN(@List) > 0
          begin
            Select @Pos=CHARINDEX(@Delimiter,@List,1)      
            if @Pos>0
               begin
                 Insert into @TABLEOFVALUES ([Value]) Values (SubString(@List,1,@Pos -1))
                 Select @LIST = STUFF(@List,1,@Pos ,'')
               end
            else  
                begin
                Insert into @TABLEOFVALUES ([Value]) Values (@List)
                Select @LIST =''
                end  
          end
       Return 
       End
      

    呼び出しあり

    Select Distinct b.ArticleID,b.Title,b.Description,b.Details,b.KeyWords from
    (
    Select * from Article a1 
    CROSS APPLY [dbo].[uf_SplitKeywords](',',keywords) f1
    Where a1.ArticleID=3
    ) a
    Join
    (
    Select * from Article a2 
    CROSS APPLY [dbo].[uf_SplitKeywords](',',keywords) f2
    ) b
    on a.Value=b.Value
      

    1. エスケープ文字のエスケープは機能しません–SQLLIKE演算子

    2. ST_MinimumBoundingRadiusから半径を選択します

    3. ユーザー定義タイプがPostgreSQLにすでに存在するかどうかを確認します

    4. PostgreSQL:pgcryptoで列を暗号化する