Sql 查询以获取两个字符串之间的常用词

Sql 查询以获取两个字符串之间的常用词,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我需要一个SQL查询来获取两个句子之间的常用词。例如: 这个网站很有帮助 我需要一个有用的网站 结果应该是:网站有帮助 另外,如果我需要将句子1与表字段记录进行比较,以获得包含句子1中最常见单词的记录,我可以做什么?您的问题标题是MSQL,因此我将您的问题作为Sql Server问题 分裂函数 根据SQL Server版本/服务器配置,您将需要一个拆分函数,该函数可以拆分所选分隔符上的字符串。这里有这样一个函数 CREATE FUNCTION [dbo].[fnSplit](@data NVAR

我需要一个SQL查询来获取两个句子之间的常用词。例如:

这个网站很有帮助

我需要一个有用的网站

结果应该是:网站有帮助


另外,如果我需要将句子1与表字段记录进行比较,以获得包含句子1中最常见单词的记录,我可以做什么?

您的问题标题是MSQL,因此我将您的问题作为Sql Server问题

  • 分裂函数
  • 根据SQL Server版本/服务器配置,您将需要一个拆分函数,该函数可以拆分所选分隔符上的字符串。这里有这样一个函数

    CREATE FUNCTION [dbo].[fnSplit](@data NVARCHAR(MAX), @delimiter NVARCHAR(5))
    RETURNS @t TABLE (rowNum int IDENTITY(1,1), data NVARCHAR(max), descriptor varchar(255) NULL)
    AS
    BEGIN
    
        DECLARE @textXML XML;
        SELECT    @textXML = CAST('<d>' + REPLACE(@data, @delimiter, '</d><d>') + '</d>' AS XML);
    
        INSERT INTO @t(data)
        SELECT  RTRIM(LTRIM(T.split.value('.', 'nvarchar(max)'))) AS data
        FROM    @textXML.nodes('/d') T(split)
    
        RETURN
    END
    
    创建函数[dbo].[fnSplit](@data-NVARCHAR(MAX),@delimiter-NVARCHAR(5))
    返回@t表(rowNum int IDENTITY(1,1)、数据NVARCHAR(max)、描述符varchar(255)NULL)
    作为
    开始
    声明@textXML;
    选择@textXML=CAST(“”+REPLACE(@data,@delimiter,)+“”作为XML);
    插入@t(数据)
    选择RTRIM(LTRIM(T.split.value('.','nvarchar(max)'))作为数据
    来自@textXML.nodes('/d')T(拆分)
    返回
    结束
    
  • 使用split函数查询常用词(有很多方法可以做到这一点,这里有一种)。
    
    选择句子1.data
    来自dbo.fnSplit('这个网站非常有用','')句1
    内部连接dbo.fnSplit('我需要一个有用的站点','')sentence1.data=sentence2.data上的sentence2
    

  • 您的问题标题是MSQL,所以我将您的问题作为Sql Server问题

  • 分裂函数
  • 根据SQL Server版本/服务器配置,您将需要一个拆分函数,该函数可以拆分所选分隔符上的字符串。这里有这样一个函数

    CREATE FUNCTION [dbo].[fnSplit](@data NVARCHAR(MAX), @delimiter NVARCHAR(5))
    RETURNS @t TABLE (rowNum int IDENTITY(1,1), data NVARCHAR(max), descriptor varchar(255) NULL)
    AS
    BEGIN
    
        DECLARE @textXML XML;
        SELECT    @textXML = CAST('<d>' + REPLACE(@data, @delimiter, '</d><d>') + '</d>' AS XML);
    
        INSERT INTO @t(data)
        SELECT  RTRIM(LTRIM(T.split.value('.', 'nvarchar(max)'))) AS data
        FROM    @textXML.nodes('/d') T(split)
    
        RETURN
    END
    
    创建函数[dbo].[fnSplit](@data-NVARCHAR(MAX),@delimiter-NVARCHAR(5))
    返回@t表(rowNum int IDENTITY(1,1)、数据NVARCHAR(max)、描述符varchar(255)NULL)
    作为
    开始
    声明@textXML;
    选择@textXML=CAST(“”+REPLACE(@data,@delimiter,)+“”作为XML);
    插入@t(数据)
    选择RTRIM(LTRIM(T.split.value('.','nvarchar(max)'))作为数据
    来自@textXML.nodes('/d')T(拆分)
    返回
    结束
    
  • 使用split函数查询常用词(有很多方法可以做到这一点,这里有一种)。
    
    选择句子1.data
    来自dbo.fnSplit('这个网站非常有用','')句1
    内部连接dbo.fnSplit('我需要一个有用的站点','')sentence1.data=sentence2.data上的sentence2
    

  • 在我看来,所有这些反对票对于第一次的海报类型来说有点难。哦,天哪,这并不是那么模糊。这当然可以用它目前的形式来回答。所有这些反对票对第一次的海报类型来说有点难,依我看。哦,天哪,这并不是那么模糊。这当然可以用它目前的形式来回答。多谢了,德维特,我想它能正常工作。我使用此函数可以从特定的表列中获取与“此站点非常有用”语句匹配的单词最多的记录,例如?嗨,我不确定我是否理解最后一个示例。在您的解决方案中,我们比较了两个固定语句,但我的意思是将数据库表中的一个句子与多个记录进行比较,以获得与此特定句子具有更多匹配单词的记录。节省了大量时间。非常感谢。它可以按照我的要求工作。我使用此函数可以从特定的表列中获取与“此站点非常有用”语句匹配的单词最多的记录,例如?嗨,我不确定我是否理解最后一个示例。在您的解决方案中,我们比较了两个固定语句,但我的意思是将数据库表中的一个句子与多个记录进行比较,以获得与这个特定句子有更多匹配词的记录。节省了大量时间。