如何在 sql 服务器查询中使用通配符
How do I use a wild card in the middle of an sql server like query
在 SQL 服务器中执行 select 时,我可以在查询文本的开头或结尾放置一个 % 以指示我想要其他文本的任意数量的字符,但我不确定中间怎么办。
例如我想要 SQL 如下所示,
select *
From Table
Where name like '%[Error] Something failed in (%) session%'
当 运行 与以下数据相对时
Row | Date | Log Message
1 |2016-01-01 |'[Error] Something failed in (Freds) session'
2 |2016-01-01 |'[Error] Something failed in (Ilenes) session'
3 |2016-01-01 |'[Error] Something failed in (Freds) session'; Some other warning
4 |2016-01-01 |'[Warning] Something else went wrong'
5 |2016-01-01 |'[Warning] Some other warning'
会给我
Row |Date | Log Message
1 |2016-01-01 |'[Error] Something failed in (Freds) session'
2 |2016-01-01 |'[Error] Something failed in (Ilenes) session'
3 |2016-01-01 |'[Error] Something failed in (Freds) session'; Some other warning
但是它没有任何回报,我需要改变什么。
问题是由于字符串中存在 []
。 []
与 LIKE
运算符一起使用以查找
any single character within the specified range ([a-f]) or set
([abcdef]).
所以你需要 ESCAPE
方括号的
select 1
where '[Error] Something failed in (Freds) session'
like '%\[Error] Something failed in (%) session%' escape '\'
或
select 1
where '[Error] Something failed in (Freds) session'
like '%[[]Error] Something failed in (%) session%'
在 SQL 服务器中执行 select 时,我可以在查询文本的开头或结尾放置一个 % 以指示我想要其他文本的任意数量的字符,但我不确定中间怎么办。
例如我想要 SQL 如下所示,
select *
From Table
Where name like '%[Error] Something failed in (%) session%'
当 运行 与以下数据相对时
Row | Date | Log Message
1 |2016-01-01 |'[Error] Something failed in (Freds) session'
2 |2016-01-01 |'[Error] Something failed in (Ilenes) session'
3 |2016-01-01 |'[Error] Something failed in (Freds) session'; Some other warning
4 |2016-01-01 |'[Warning] Something else went wrong'
5 |2016-01-01 |'[Warning] Some other warning'
会给我
Row |Date | Log Message
1 |2016-01-01 |'[Error] Something failed in (Freds) session'
2 |2016-01-01 |'[Error] Something failed in (Ilenes) session'
3 |2016-01-01 |'[Error] Something failed in (Freds) session'; Some other warning
但是它没有任何回报,我需要改变什么。
问题是由于字符串中存在 []
。 []
与 LIKE
运算符一起使用以查找
any single character within the specified range ([a-f]) or set ([abcdef]).
所以你需要 ESCAPE
方括号的
select 1
where '[Error] Something failed in (Freds) session'
like '%\[Error] Something failed in (%) session%' escape '\'
或
select 1
where '[Error] Something failed in (Freds) session'
like '%[[]Error] Something failed in (%) session%'