当前位置: 首页 > 知识库问答 >
问题:

带方括号的SQL Server直接工作,但不使用变量

巩子实
2023-03-14

我在like中使用方括号来表示一系列通配符。奇怪的是,在语句中直接使用表达式可以正确工作,从而获取预期的行。但是从变量中使用相同的表达式不会产生任何结果。为什么它不能从变量开始工作?

作品:

SELECT * FROM dbo.Table WHERE Column LIKE '%B[A-Z][A-Z]%';
Results: BAA, BAB, BAC, ... until BZZ

不起作用:

DECLARE @var VARCHAR(10)
SET @var = N'B[A-Z][A-Z]'
SELECT * FROM dbo.Table WHERE Column LIKE CONCAT('%', @var, '%');

我还尝试与连接,但仍然得到零结果(如“%”@var“%”)

当我在变量中只使用一个范围时,同样的表达式也起作用,但是我真的需要使用两个范围

SET @var = N'B[A-Z]'
SELECT * FROM dbo.Table WHERE Column LIKE '%' + @var + '%';
Results: BA, BB, BC, BD, ....

共有1个答案

丌官嘉福
2023-03-14

使变量变长,以便它可以存储整个模式。您可以通过PRINT@var查看变量的实际值,这将显示结束方括号已被删除。

declare @var varchar(10) = 'B[A-Z][A-Z]'
print @var
 类似资料:
  • 问题内容: 我还没有找到任何官方文档。但是afaik,是否在没有括号的情况下使用我们的类实例化没有关系-只要不涉及参数,对吗? 要么 但是谁能告诉我性能是否有所不同?“更正确”的方法是哪一种?有任何官方文件吗? 问题答案: 性能上的任何差异将绝对可以忽略。 虽然这两种方式都很好,我个人更喜欢使用 ,因为通常情况下,一个方法 是 正在这里所说的,和PHP函数/方法调用时需要。而且,它与带有参数的实例

  • 问题内容: 今天有人告诉我,可以不带括号地调用一个函数。我能想到的唯一方法是使用类似或的函数。 但是,这些都需要加上括号,然后放在第一个平方上。我还考虑了将函数传递给某种事件处理程序的想法,例如: 但是,问题就变成了“如何在没有括号的情况下调用?” 那么这个谜题的解决方案是什么?如何在不使用括号的情况下调用Javascript函数? 问题答案: 有多种不带括号的函数调用方法。 假设您已定义此函数:

  • 今天有人告诉我,可以调用没有括号的函数。我能想到的唯一方法是使用像或这样的函数。 但这些要求在和上加上括号,让我们处于第一步。我还考虑了将函数传递给某种事件处理程序的想法,例如: 但是问题变成了“如何在没有括号的情况下调用?” 那么这个谜的答案是什么呢?如何在Javascript中调用函数而不使用括号?

  • 问题内容: 我正在使用Spring Boot开发应用程序。在REST控制器中,我更喜欢使用路径变量(注释)。我的代码获取了path变量,但它在网址中包含 {} 括号。请任何人建议我解决这个问题 网址 输出控制器 {约翰} 问题答案: 使用提交请求来代替。 您为路径变量赋予Spring值“ {john}” ,因此Spring通过“ {}”获得它 Web MVC框架 指出 URI模板模式 URI模板可

  • 问题内容: 这是一个相当简单的问题。当您打印出LinkedList时,如下所示: 它将其打印出来,将列表括在方括号中,如下所示: 有没有办法不用方括号就可以打印出来? 问题答案: 是的-迭代列表并打印出来(每个列表后面都有逗号,但最后一个元素是逗号)。但是,有实用程序可以帮助您: 番石榴: commons-lang: 还有一点要注意:不要依赖任何对象的方法。它并不是要向用户显示对象,也不是要用作预

  • 问题内容: 我遇到了一个使用以下语法导入库的javascript库: 上面的方法和下面的方法有什么区别? 问题答案: 这说: 从名称下导入 默认* 导出,并以相同的名称导入 命名的 导出。 * 这结合了您可能已经看到的两种常见语法 第一个用于导入和命名默认导出,第二个用于导入指定的命名导出。 通常,大多数模块将提供单个默认导出或命名导出列表。模块同时提供默认导出 和 命名导出的情况要少一些。但是,