SQL: 需要在列中使用时隐藏特定单词 -

SQL: Need to hide a specific word(s) when they are used in a column -

我现在的问题是能不能做点什么,所以这个问题没有代码。如果可以的话,我可以进一步查询和研究的正确短语是什么。

我正在处理一个客户数据库,其中已发出请求,如果在评论字段中使用了特定词,则在使用报表查询并使用 SSRS/Report Builder 查看时,该词将被替换或隐藏。

我还想知道是否可以编写一个表达式来隐藏或屏蔽该词,然后将其用在报告中使用的 tablix 字段中。

如有任何建议,我们将不胜感激。

数据库是 Microsoft SQL 2016,SSRS 2017 和 Report Builder 2016。

如果有一个特定的词,那么答案很简单。您可以只使用 replace()。事实上,您可以将其添加到 table:

alter table t add safe_comments as (replace(comments, '<bad word>', 'XXXXXXX'));

您可以通过嵌套 replace() 值将其扩展到少数硬编码词。

但是,我怀疑您的问题是您有一个相当长的要替换的单词列表。如果是这样的话,那么简单的解决方案是行不通的。

在 SQL 服务器中可以从给定评论中删除存储在 table 中的单词列表。这需要递归 CTE(或用户定义的函数)。这可能具有返回单个记录或少量记录的 acceptable 性能。但是,要扫描整个 table,它可能太慢了。