Dados de exemplo em uma coluna de tabela, tipo de dados NVARCHAR(MAX)
. Esses dados são coletados por rastreamento de evento estendido capturando chamadas de banco de dados geradas pelo Entity Framework.
exec sp_executesql N'SELECT TOP (2)
[Extent1].[ccusqcode] AS [ccusqcode],
[Extent1].[ccusname] AS [ccusname],
[Extent1].[ccusfirstname] AS [ccusfirstname],
[Extent1].[ccuslastname] AS [ccuslastname],
[Extent1].[dbirthday] AS [dbirthday],
[Extent1].[ccellphone] AS [ccellphone],
[Extent1].[cdriverlicense] AS [cdriverlicense],
[Extent1].[csocsecno] AS [csocsecno],
[Extent1].[dfirstvisit] AS [dfirstvisit],
[Extent1].[dlastvisit] AS [dlastvisit],
[Extent1].[nmtdrxcount] AS [nmtdrxcount],
[Extent1].[lduplabel] AS [lduplabel],
[Extent1].[cemployerid] AS [cemployerid],
[Extent1].[mnotes] AS [mnotes],
[Extent1].[cemployercontact] AS [cemployercontact],
FROM [dbo].[customer] AS [Extent1]
WHERE ([Extent1].[cusid_PK] = @p__linq__0) AND ([Extent1].[pharminfoid_FK] = @p__linq__1)',N'@p__linq__0 bigint,@p__linq__1 bigint',@p__linq__0=NULL,@p__linq__1=1
Eu quero usar o LIKE
operador para encontrar todas as linhas com texto FROM [dbo].[customer]
.
SELECT *
FROM [dbname].[schemaName].[tableName]
WHERE STATEMENT like '%FROM [[]dbo[]].[[]customer[]]%'
Por que não funciona?
Não há necessidade de escapar do colchete de fechamento. Se não houver colchete de abertura, o SQL Server não considerará o colchete de fechamento como parte de um espaço reservado.
Portanto, você deve escapar apenas do colchete de abertura, usando colchetes ou definindo um caractere de escape (que eu pessoalmente acho mais legível neste caso).
DBFiddle aqui
A documentação especifica os dois métodos de escape e estados específicos (sob o título Usando caracteres curinga como literais):