在使用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>')
,'')