【问题标题】:Get matching names from SQL Server从 SQL Server 获取匹配的名称
【发布时间】:2012-10-11 10:57:24
【问题描述】:

我的问题是,我有一个人名及其成就的数据库。现在,我有一些包含人名的段落。我需要从这些段落中提取名称。应用程序的 Web 端将附加一个提取名称的超链接及其活动。

我的数据库中的数据可能如下所示:

Name          |  Achievement
----------------------------------------                              
Steve Jobs    |  Founder of Apple
Bill Gates    |  Founder of Microsoft

现在我有这样的字符串:After saving up some money, Steve Jobs took off for India in the search of enlightenment.

我需要从上面的字符串中找到Steve Jobs 并将其添加到超链接。 知道怎么做吗?

【问题讨论】:

    标签: sql sql-server sql-server-2008 full-text-search


    【解决方案1】:

    SQL Server 确实不是执行此操作的最佳位置,因为根据定义,超链接是 HTML,但是...

    declare @s varchar(500) = 'After saving up some money, Steve Jobs took off for India in the search of enlightenment.'
    
    select 
        @s = REPLACE(@s, name, '<a href="#">'+name+'</a>')    
    from yourtable
    where @s like '%'+name+'%'
    select @s
    

    【讨论】:

    • 拯救了我的一天。谢谢。但我的数据库大小非常大。有没有优化的方法?还是比 SQL Server 更好的技术?
    • 如果你有非常大的数据库,你可以使用 SQL FULLTEXT Search 而不是 like
    【解决方案2】:

    您应该以某种预定义的格式保存数据,例如,您可以在person name 的开头和结尾处使用***

    存了一些钱后,***Steve Jobs*** 启程前往印度寻求启蒙。

    然后你可以通过sql找到***来提取人名

    编辑:

    我自己会尝试寻找其他方法来做到这一点。例如,我会将人名保存在单独的列中。

    【讨论】:

    • 感谢您的回复。但我无法编辑字符串。这来自新闻提要。
    • 名称本身位于单独的列中。立即查看帖子。
    猜你喜欢
    • 2015-03-14
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多