use*_*665 2 sql sql-server sql-like
在SQL Server中进行选择时,我可以在查询文本的开头或结尾添加%以表示我想要其他文本的任意数量的字符,但我不知道如何在中间执行此操作.
我想要SQL如下,
select *
From Table
Where name like '%[Error] Something failed in (%) session%'
Run Code Online (Sandbox Code Playgroud)
这与下面的数据运行时
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'
Run Code Online (Sandbox Code Playgroud)
会给我的
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
Run Code Online (Sandbox Code Playgroud)
但相反,它什么都没有回来,我需要改变什么.
问题是由于[]字符串的存在.[]与LIKE运算符一起使用来查找
指定范围内的任何单个字符([af])或set([abcdef]).
所以你需要ESCAPE在方括号的
select 1
where '[Error] Something failed in (Freds) session'
like '%\[Error] Something failed in (%) session%' escape '\'
Run Code Online (Sandbox Code Playgroud)
要么
select 1
where '[Error] Something failed in (Freds) session'
like '%[[]Error] Something failed in (%) session%'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
452 次 |
| 最近记录: |