sql – 检查括号是平衡/匹配的

我有一些MS Word文档,我已将整个内容传输到SQL表中.

内容包含许多方括号和大括号,例如

[{a} as at [b],] {c,} {d,} etc 

我需要检查以确保括号是平衡/匹配的,例如以下内容应返回false:

 - [{a} as at [b], {c,} {d,} 
 - ][{a} as at [b], {c,} {d,} 
 - [{a} as at [b],] {c,} }{d,

到目前为止我所做的是提取所有括号并将它们的信息存储到SQL表中,如下所示:
(段号,支架类型,支架位置,支架水平)

3   [   8   1
3   ]   18  0
3   [   23  1
3   ]   35  0
7   [   97  1
7   ]   109 0
7   [   128 1
7   {   129 2
7   }   165 1
7   [   173 2
7   ]   187 1
7   ]   189 0
7   {   192 1
7   }   214 0
7   {   216 1
7   }   255 0
7   {   257 1
7   }   285 0
7   {   291 1
7   }   326 0
7   {   489 1
7   }   654 0

我不确定算法将如何工作来检查括号在每个段落中是否平衡,并在不是时给出错误消息.

任何意见,将不胜感激!

编辑:

代码也需要适用于以下场景;

(段号,支架类型,支架位置,支架水平)

15  [   543 1
15  {   544 2
15  }   556 1
15  [   560 2
15  ]   580 1
15  ]   581 0
15  [   610 1
15  ]   624 0
15  [   817 1
15  ]   829 0

最佳答案 这必须在sql server上吗?

一个简单的解决方案是使用通用语言并使用堆栈.

>逐个字符地读取字符串
>如果遇到一个开口支撑,请将其推入堆叠状态.
>如果你遇到一个右大括号弹出.

如果匹配所有括号

>完全读完段落后,堆栈为空.

除非在此过程中发生以下其中一项

>你必须弹出一个空堆栈
>弹出的括号与结束括号不匹配

使用正则表达式匹配括号不是一个好主意,它们不应该像那样使用

点赞