Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 SQL get变量位于字符串中间_Sql Server 2008_Substring_Audit - Fatal编程技术网

Sql server 2008 SQL get变量位于字符串中间

Sql server 2008 SQL get变量位于字符串中间,sql-server-2008,substring,audit,Sql Server 2008,Substring,Audit,我正试图创建我的第一个SQL审计,但遇到了一点障碍。我有两个表,一个是包含审核日志的临时表,另一个是包含Lastnames的表(我们称之为tblLastName) 现在,审计针对的是任何具有针对特定表的SELECT的内容,我希望将结果与我的姓氏表进行比较。基本上,在审计表中是statement列,在中会有类似的内容 where lastname like %personslastname% 我该如何获取%%之间的值,以便将其与lastnames表进行比较 目前,我可以得到哪些行的姓氏被选中,但

我正试图创建我的第一个SQL审计,但遇到了一点障碍。我有两个表,一个是包含审核日志的临时表,另一个是包含Lastnames的表(我们称之为tblLastName)

现在,审计针对的是任何具有针对特定表的SELECT的内容,我希望将结果与我的姓氏表进行比较。基本上,在审计表中是statement列,在中会有类似的内容

where lastname like %personslastname%
我该如何获取%%之间的值,以便将其与lastnames表进行比较

目前,我可以得到哪些行的姓氏被选中,但我不知道如何将其转化为有用的内容。我认为可行的逻辑是获取具有姓氏的行,获取该行的子字符串(我被卡住的地方)以仅获取名称,将该名称存储在变量中,然后与另一个表进行比较。不幸的是,到目前为止,我只知道:

select * from #MyTempTable where statement like '%LastName like%'
任何帮助都将不胜感激。它也是SQL Server 2008

编辑数据:

SELECT vLastName from tblLastName
产生如下结果: 超级用户, 亨德里克斯, 格林伍德, 第页

但我的审计报告要深入得多,因此我略作删节:

select DISTINCT 
  x.ReceiveMail as [Receive Mail], 
  x.ParticipantID as [Participant ID], 
  x.LastName as [Last Name], 
  x.FirstName as [First Name], 
  x.AliasName as [Alias Name], ......  
where x.LastName like '%Greenwood%' 
AND (x.FirstName like '%Jonny%' OR x.AliasName like '%Jonny%')

您可以在问题中添加一些示例数据吗?您也可以提供AuditTable.StatementColumn的示例数据吗?很抱歉,不清楚,上面的审计语句是语句列中的文本。我有几百行类似的字符串,它们是在运行select查询时保存的。是否有可能出现格式错误的where语句?我不这么认为。我可能不清楚,我试图从审计结果中去掉姓氏,所以在上面的例子中,去掉“Greenwood”并将其与已知姓氏列表进行比较。所以我现在有一个语句,它试图在字符串前后获得charindex,但它不起作用。