如何匹配SQL server中不包括括号之间差异的文本?
我有一个审计日志表,它有一系列字符串,如 “一些文本[详细信息]更多文本” [details]前后的模式指示审计跟踪条目类型。括号中的文字表示其用途。我想创建一个查询,只查找我要查找的审核条目。我本想使用以下类似“一些文本[%]更多文本”的内容,但似乎不起作用 当我运行下面的查询时,它将检索预期的结果+更多如何匹配SQL server中不包括括号之间差异的文本?,sql,sql-server,Sql,Sql Server,我有一个审计日志表,它有一系列字符串,如 “一些文本[详细信息]更多文本” [details]前后的模式指示审计跟踪条目类型。括号中的文字表示其用途。我想创建一个查询,只查找我要查找的审核条目。我本想使用以下类似“一些文本[%]更多文本”的内容,但似乎不起作用 当我运行下面的查询时,它将检索预期的结果+更多 select top 1000 * from Table where NAME like 'Some Text%' 当我尝试 select top 1000 * from Table wh
select top 1000 *
from Table
where NAME like 'Some Text%'
当我尝试
select top 1000 *
from Table
where NAME like 'Some Text[%'
无需返回,因为括号在正则表达式中具有特殊的语法含义。因此,如果要在查询中使用括号,则需要将其转义:
select top 1000 *
from Table
where NAME like 'Some Text[[]%'
特殊字符可以放在括号内进行转义。在这种情况下,开口括号本身需要放在括号内,即
[[[]
如果您将在stackoverflow中花些时间,许多帖子将回答您的问题。请参见下文
您需要使用[]
括号将文本用特殊字符括起来
查询现在看起来像:
select top 1000 *
from Table
where NAME like '[Some Text[]%'
或
尝试下面的t-sql代码:
create table dbo.tblTest (ID int IDENTITY(1, 1), strings varchar(200))
insert dbo.tblTest
select 'i have to find this text excluding [these strings inside the brackets]'
union all select '[don''t include these texts inside the brackets]. but include these!'
union all select 'why can''t i search for these, but [not these]? nothing seems to work when brackets are involved. :('
select *
from dbo.tblTest
DECLARE @stringToSearchFor VARCHAR(200) = 'nothing seems'
SELECT t.*
FROM dbo.tblTest t
JOIN
(SELECT nobrackets.*
FROM
(SELECT cleanString = REPLACE(t.strings, SUBSTRING(t.strings, CHARINDEX('[', t.strings), CHARINDEX(']', t.strings) - CHARINDEX('[', t.strings) + 1), '')
, t.ID
FROM dbo.tblTest t) noBrackets
WHERE noBrackets.cleanString LIKE CONCAT('%', @stringToSearchFor, '%')) tNoBracket ON tNoBracket.ID = t.ID
您好,您是否正在尝试搜索该列中的值(不包括打开([)和关闭(])括号内的字符串)?
select top 1000 *
from Table
where NAME like 'Some Text![%] more text' ESCAPE '!'
create table dbo.tblTest (ID int IDENTITY(1, 1), strings varchar(200))
insert dbo.tblTest
select 'i have to find this text excluding [these strings inside the brackets]'
union all select '[don''t include these texts inside the brackets]. but include these!'
union all select 'why can''t i search for these, but [not these]? nothing seems to work when brackets are involved. :('
select *
from dbo.tblTest
DECLARE @stringToSearchFor VARCHAR(200) = 'nothing seems'
SELECT t.*
FROM dbo.tblTest t
JOIN
(SELECT nobrackets.*
FROM
(SELECT cleanString = REPLACE(t.strings, SUBSTRING(t.strings, CHARINDEX('[', t.strings), CHARINDEX(']', t.strings) - CHARINDEX('[', t.strings) + 1), '')
, t.ID
FROM dbo.tblTest t) noBrackets
WHERE noBrackets.cleanString LIKE CONCAT('%', @stringToSearchFor, '%')) tNoBracket ON tNoBracket.ID = t.ID