久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

TSQL 匹配盡可能多的逗號(hào)分隔標(biāo)簽

TSQL matching as many comma-separated tags as possible(TSQL 匹配盡可能多的逗號(hào)分隔標(biāo)簽)
本文介紹了TSQL 匹配盡可能多的逗號(hào)分隔標(biāo)簽的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

一個(gè)表包含一個(gè) Title 字段和一個(gè) Tags 字段.標(biāo)簽是通過(guò)潛在狄利克雷分配(LDA)從文檔中生成的,可以是例如魚(yú)、烤箱、時(shí)間"、燒烤、啤酒"或肉、燒烤".標(biāo)簽的長(zhǎng)度不固定.

A table contains a Title field and a Tags field. The tags are generated via latent Dirichlet allocation (LDA) from documents and can be e.g. 'fish, oven, time', 'BBQ, beer' or ' meat, BBQ'. The length of the tags is not fixed.

給定一組標(biāo)簽,無(wú)論標(biāo)簽的順序如何,如何找到匹配的標(biāo)簽數(shù)量最多的記錄?

Given a set of tags, how to find the record with the maximum amount of tags matching no matter the order of the tags?

因此,如果給出BBQ, meat",最好的結(jié)果應(yīng)該是meat, BBQ".如果給出'BBQ,fish, cream',則可以返回所有三個(gè)記錄(它們都有一個(gè)匹配的標(biāo)簽).

So, if 'BBQ, meat' is given the best result should be 'meat, BBQ'. If 'BBQ, fish, cream' is given all three records can be returned (they all have one matching tag).

推薦答案

使用這個(gè)函數(shù)并創(chuàng)建這個(gè)>

Use this function and Create this one

    CREATE FUNCTION dbo.getCountOfMatch ( @mainString VARCHAR(MAX),  @searchString nvarchar(max))
    RETURNS
      INT
    AS
    BEGIN
        DECLARE @returnCount INT

        SELECT 
            @returnCount = COUNT(1)
        FROM 
            splitstring(@mainString) A INNER JOIN 
            splitstring(@searchString) B ON A.Name = B.Name

        RETURN @returnCount
    END

    SELECT TOP 1 // What you want
      Title,
      Tags
    FROM
    (
        SELECT
            A.Title,
            A.Tags,
            dbo.getCountOfMatch(A.Tags, @search) CountTags -- The number of matches.
        FROM
            TABLE A
    ) B
    ORDER BY B.CountTags DESC

更新

DECLARE @searchText NVARCHAR(MAX) = 'BBQ, meat'
DECLARE @query NVARCHAR(MAX) = '
        SELECT
            *
        FROM
            Table
        WHERE '

SELECT
    @query += 
    (
        SELECT
            'Tags like ''%' + A.Name + '%'' AND ' -- Dont forget trim!
        FROM 
            splitstring(@searchText) A
        FOR XML PATH ('')
    )

SELECT @query = LEFT(@query, LEN(@query) - 4) + 'ORDER BY LEN(Tags)' -- For exactly matching: LEN(Tags) = LEN(@searchText)

EXEC sp_executesql  @query

查詢的樣子;

    SELECT
        *
    FROM
        Table
    WHERE 
        Tags like '%BBQ%' AND 
        Tags like '%meat%'
    ORDER BY LEN(Tags) 

這篇關(guān)于TSQL 匹配盡可能多的逗號(hào)分隔標(biāo)簽的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問(wèn)題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Modify Existing decimal places info(修改現(xiàn)有小數(shù)位信息)
The correlation name #39;CONVERT#39; is specified multiple times(多次指定相關(guān)名稱(chēng)“CONVERT)
T-SQL left join not returning null columns(T-SQL 左連接不返回空列)
remove duplicates from comma or pipeline operator string(從逗號(hào)或管道運(yùn)算符字符串中刪除重復(fù)項(xiàng))
Change an iterative query to a relational set-based query(將迭代查詢更改為基于關(guān)系集的查詢)
concatenate a zero onto sql server select value shows 4 digits still and not 5(將零連接到 sql server 選擇值仍然顯示 4 位而不是 5)
主站蜘蛛池模板: 午夜午夜精品一区二区三区文 | 久久免费小视频 | 雨宫琴音一区二区在线 | wwww.xxxx免费 | 亚洲激情专区 | 国产精品一区在线观看 | 九色在线观看 | 国产在线不卡视频 | 天天干夜夜操 | 国产免费一区二区三区网站免费 | 中文字幕在线观看 | 久久精品视频免费看 | 欧美日韩中文字幕在线 | 久久久久91 | 成人精品一区亚洲午夜久久久 | 久久久久久久av麻豆果冻 | 国产欧美在线 | 精品久久久久一区二区国产 | 国产午夜精品久久久 | 亚洲精品久久久久久一区二区 | 国产福利在线播放 | 国产电影一区二区在线观看 | 精品96久久久久久中文字幕无 | 做a视频| 久久久精品一区二区三区 | 国产精品一区二区在线 | 三级在线视频 | 国产日韩欧美一区二区在线播放 | 欧美国产日韩一区 | 日产久久 | 国产精品a久久久久 | 99pao成人国产永久免费视频 | 国产毛片av | 国产精品免费一区二区三区四区 | 91av视频在线播放 | 国产成人精品av | 国产精品区一区二区三 | 天天操操| 91社区视频| 国产成人一区 | 精品视频一区二区三区在线观看 |