在使用where子句从sql获取数据集后,很容易在代码中替换搜索文本:

x = x.Replace("SearchText","<span style='color:RED'>SearchText</span>");

我想知道在SQL中是否有办法。
Select x.Replace("SearchText","<span class='highlight'>SearchText</span>") as x from t where x like '%SearchText%'

或类似的东西。

我问的原因是因为我这样做:
COALESCE(LastName + ', ' + FirstName, LastName, FirstName) as Name

并且我不希望在返回包含“鲍勃”的姓氏或包含“鲍勃”的名字时,返回的“鲍勃·鲍勃”的“名称”字段得到两个突出显示的区域(请注意,姓氏和姓氏具有不同的搜索词组”

是的,我可以单独返回两个字段,然后将它们加入代码中,但是我只想看看它是否可以在SQL中完成。

最佳答案

T-SQL包含替换功能

替换(string_expression,string_pattern,string_replacement)

那应该做你所需要的

COALESCE(REPLACE(FirstName,'SearchText1','<span class=''highlight''>' + 'SearchText1' + '</span>')+','
        +REPLACE(LastName,'SearchText2','<span class=''highlight''>'+'SearchText2'+'</span>')
        ,REPLACE(FirstName,'SearchText1','<span class=''highlight''>' + 'SearchText1' + '</span>')
        ,REPLACE(LastName,'SearchText2','<span class=''highlight''>'+'SearchText2'+'</span>')
        ,'')

10-05 21:09
查看更多