Sql存储过程与Operator变量类似

Jac*_*ack 5 t-sql sql-server

print("select CustomerNo, CustomerName, Address, City, State, Zip,
    Phone, Fax, ContactName, Email  
    from Customers where CustomerName like '%field%'");
Run Code Online (Sandbox Code Playgroud)

大家好.这是一个简单的问题,但我无法想象,因为我对tsql和sql很新.

我使用上面的存储过程来进行搜索.我的问题是'%field%'.您使用什么变量或它在tsql中如何工作?例如,"Customers = @CustomerNo".对于通配符怎么样?你如何传递变量和通配符?我想我可以在代码中执行"%"+"field"+"%",但有没有办法不这样做?

Bil*_*win 18

通配符只是字符串文字的一部分,例如'%field%'只是一个字符串.

您可以将通配符连接到字符串上,然后使用字符串:

@Pattern = '%' + @CustomerName + '%';

...WHERE CustomerName LIKE @Pattern
Run Code Online (Sandbox Code Playgroud)

或者你可以在SQL中编写一个涉及连接的表达式:

WHERE CustomerName LIKE '%' + @CustomerName + '%'
Run Code Online (Sandbox Code Playgroud)

对此没有其他神奇的解决方案.


ang*_*son 0

如果您使用=,则表示“等于”,这不会使用通配符。

如果您使用仅适用于文本字段的 LIKE,则可以使用通配符。

您无法使用 = 获得通配符匹配。

请注意,根据数据,通配符搜索可能会执行表扫描,因此在允许之前我会确保这就是您想要的。

例如,这将执行表扫描:

WHERE CustomerID LIKE '%1'
Run Code Online (Sandbox Code Playgroud)

IE。所有具有以 1 结尾的客户标识符(文本)的客户。这无法通过索引来解决。

最后的想法。我不能 100% 确定我完全理解你在问什么。你能澄清一下吗?“随通配符一起传递变量”具体是什么意思?