print("select CustomerNo, CustomerName, Address, City, State, Zip,
Phone, Fax, ContactName, Email
from Customers where CustomerName like '%field%'");
大家好。这是一个简单的问题,但我无法想象,因为我对tsql和sql很新。
我使用上面的存储过程进行搜索。我的问题是'%field%'。您使用什么变量或它在tsql中如何工作?例如,“Customers = @CustomerNo”。对于通配符怎么样?你如何传递变量和通配符?我想我可以在代码中执行“%”+“field”+“%”但有没有办法不这样做?
答案 0 :(得分:17)
通配符只是字符串文字的一部分,例如'%field%'只是一个字符串。
您可以将通配符连接到字符串上,然后使用字符串:
@Pattern = '%' + @CustomerName + '%';
...WHERE CustomerName LIKE @Pattern
否则你可以在SQL中编写一个涉及连接的表达式:
WHERE CustomerName LIKE '%' + @CustomerName + '%'
没有其他神奇的解决方案。
答案 1 :(得分:2)
很简单。 “=”和“喜欢”都是运营商。你可以在一个接一个地做之后做什么。
因此,如果在C#中并使用SQLClient调用,您可以说:
string value;
...
value = "Some name";
...
myCommand.CommandText = "Select...from Customers Where CustomerName Like @Var";
myCommand.Parameters.AddWithValue("@Var", "%" + value + "%");
myCommand.ExecuteNonQuery();
答案 2 :(得分:0)
如果你使用=,你说“相等”,它不会使用通配符。
如果使用LIKE,它只适用于文本字段,则可以使用通配符。
你无法使用=。
获得通配符匹配请注意,根据数据,通配符搜索可能会执行表扫描,因此在您允许之前我会确保您想要它。
例如,这将进行表扫描:
WHERE CustomerID LIKE '%1'
即。所有客户标识符(文本)以1.结尾的客户。无法通过索引解决。
最后的想法。我不是百分百肯定我完全理解你在问什么。你能澄清一下吗?具体是什么意思“传入一个变量和通配符”?