Simon Elms Asked: 2024-09-15 16:40:27 +0800 CST2024-09-15 16:40:27 +0800 CST 2024-09-15 16:40:27 +0800 CST 在 SSMS XEvent Profiler 中过滤事件时,“包含”和“类似”过滤器之间有什么区别? 772 在 SQL Server Management Studio (SSMS) 中,在 XEvent Profiler 中筛选事件时,Contains 运算符和 Like 运算符之间有什么区别?我找不到有关此内容的任何文档。 这是 XEvent Profiler 的过滤器对话框,显示了可能的比较运算符列表,包括Contains和Like: sql-server 1 个回答 Voted Best Answer Martin Smith 2024-09-15T18:52:33+08:002024-09-15T18:52:33+08:00 我找不到此记录。 我期望这LIKE会表现为 TSQLLIKE关键字并支持%通配符。但实际上这并不适用。 FilterBinaryExpression从反编译的类来看,Microsoft.SqlServer.XEventStorage.dll它似乎通过如下方式处理字符串来生成正则表达式(因此分别支持*和?作为任意长度字符串和单个字符的通配符) StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("^"); foreach (char ch in wildcard) { switch (ch) { case '*': stringBuilder.Append(".*"); break; case '?': stringBuilder.Append("."); break; default: stringBuilder.Append(Regex.Escape(ch.ToString())); break; } } stringBuilder.Append("$"); this.wildcardRegex = new Regex(stringBuilder.ToString(), RegexOptions.IgnoreCase | RegexOptions.Singleline); 然后使用此正则表达式检查 wildcardRegex.IsMatch(str) 而“包含”过滤器只检查 str.IndexOf(this.value, StringComparison.CurrentCultureIgnoreCase) != -1 如果字符串包含文字子字符串,则不区分大小写地进行检查。
我找不到此记录。
我期望这
LIKE
会表现为 TSQLLIKE
关键字并支持%
通配符。但实际上这并不适用。FilterBinaryExpression
从反编译的类来看,Microsoft.SqlServer.XEventStorage.dll
它似乎通过如下方式处理字符串来生成正则表达式(因此分别支持*
和?
作为任意长度字符串和单个字符的通配符)然后使用此正则表达式检查
而“包含”过滤器只检查
如果字符串包含文字子字符串,则不区分大小写地进行检查。