主题标签的 SQL 索引 View

标签 sql sql-server regex hashtag

给定一个源表,其中的列包含任意文本,其中包含字母主题标签(#example、#alsoAnExample、#this-is-not-an-example),在 SQL Server 中创建索引 View 需要什么

主题标签正则表达式定义:

/\B#\w*[a-zA-Z]+\w*/

所需的 View 示例输出:

PostId     |    Tag
   1           example
   1           alsoAnExample
   2           yetanothertag

这将使应用程序层免于在插入时为常规表创建条目的责任,并允许在不了解标记的情况下从其他源输入数据。

如果这是可能的,是否可以以这样的方式完成插入(Posts 表插入繁重)不会造成重大负担,因为 View 索引需要频繁更新。

最佳答案

因为每行可以有多个哈希标签,所以显然不能只使用计算列索引。相反,您在概念上想要拥有的是与计算哈希标签的表值函数交叉应用的基表的索引 View 。我很想在 SQL Server 中实现这一点,但遗憾的是索引 View 所支持的内容极其有限。只需在您的用例中忘记它们即可(并在网上查找书籍中的限制以了解原因)。

相反,我建议您创建一个单独的表来保存哈希标签(格式为 (PostId INT PRIMARY KEY, Tag NVARCHAR(400) PRIMARY KEY, ... 或类似形式)。在应用程序层或使用触发器维护该表。

您还可以以延迟的方式维护表,以便可以进行批量更新并在后台进行。这当然意味着应用程序必须容忍陈旧的数据,并且意味着更多的开发工作。

关于主题标签的 SQL 索引 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19599315/

相关文章:

sql - 从现有数据填充 Visual Studio 数据库项目数据加载脚本

python - "TypeError: ' NoneType ' object is not iterable"来自 pandas read_sql

regex - 将 NR 的值传递给 AWK 中的变量

javascript - 正则表达式测试无法正常工作

sql - 有关 SQL 查询的帮助

php - 如何通过单个查询获得两个单独的结果

php - 如何使用 Laravel 迁移安全地回滚 MySql 数据库中的主索引

sql - PostgreSQL 自连接查询没有剩余空间错误

sql-server - 更改SQL Server Management Studio的默认安装路径

Java 8 : How to list files that don't match pattern using regex