使用 Substring 在 SQL Server Management Studio 的单独列中提取固定数量的字符,从给定数字开始

Using Substring to pull out a fixed number of characters starting a given number in a separate column in SQL Server Management Studio

我有一个网络聊天数据库,它有一个完整的聊天记录(包括访问者时间、文本、顾问的响应和时间等)的字符串字段,我想从中提取数据。

我以前使用一些 Substring 代码提取 8 个字符,从第 10 个字符开始,以便在访客开始与顾问交谈时获得附加的时间戳;

SubString([chat transcript], 10, 8) as [visitor message time]

我还使用 CharIndex 从字段中提取信息,告诉我第一次提到顾问的字符编号(也就是他们第一次回复时)。

CharIndex([chat agent alias],[chat transcript],0) as [alias location in chat]

但这并没有告诉我顾问第一次回复的时间。在成绩单中,顾问的第一个回复后面是一个时间戳,我希望能够为每个不同的顾问提取时间戳。

我想知道是否可以使用 Substring 函数执行与上述类似的操作,但不是说明它应该从哪个固定字符编号开始,而是使用“聊天中的别名位置”字段中的数字。 (参见下面的 table,例如,我希望它在第 4 行中搜索聊天记录字段中的第 138 个字符,然后提取该字段中接下来的八个字符)

类似于:

SubString([chat transcript], [alias location in chat], 8) as [visitor message time]

有没有人知道如何做到这一点?

我不会在裸 T-SQL 中这样做,因为在字符串操作方面 可悲 。例如,它没有实现我认为在这里会有很大帮助的正则表达式。鉴于此任务,我可能会使用 Python 使用 pyodbc 连接到此数据库,然后使用大量可用的 Python 库获取和处理文本数据。