我有一些DML语句,想要检查这些语句是否与我在数据库中的表名相对应。
例如,假设我有一个包含以下表格的数据库:
1)Emp
2)员工
3)订单
4)订单
然后是 DML声明:insert into Emp values(<some values>)
我想检查这个语句是否是我的一个表的insert语句,并且还想要识别它被触发的表。 (我将从sys.tables中检索表名,以防你想知道)
我能够提出的模式(例如,对Emp表中的插入语句)是:
<statement> LIKE 'INSERT%[[<space><tab>'+char(13)+char(10)+']Emp[<space><tab>'+char(13)+char(10)+']]%'
这是考虑表名可能出现在SQL语句中的所有方式,即它将在其周围有空格,或者可能是回车等。表的名称也可以被{{1包围}}。我已经努力检查了这一点。
但是,上述模式无法正常工作。但是,如果我要将模式更改为
[]
即摆脱一个<statement> LIKE 'INSERT%[[<space><tab>'+char(13)+char(10)+']Emp[<space><tab>'+char(13)+char(10)+']%'
它正常工作。
我如何找到解决方法?
这更像是如何检查]
内的]
,例如[]
。
所以这应该是[abc]]