我在ASP.NET中做一个项目,一次使用数据集在SQL数据库中搜索邮政编码:
string postcode = "%" + searchTerm.Trim().Replace(' ', '%') + "%";
SearchDataSet.SearchCustomerTableDataTable custTable = custAdapter.GetDataCustPostcode(postcode);
GetDataCustPostcode
运行:
SELECT * FROM CustomerTable WHERE (CustomerPostcode LIKE @CustPostcode)
我尝试时会返回预期的结果:
searchTerm = "BT14"
搜索postcode
%BT14%
或searchTerm = "BT14 7"
搜索postcode
%BT14%7%
custTable
为空:
searchTerm = "BT14 7D"
搜索postcode
%BT14%7D%
如果我尝试直接编写SQL查询,即输入:
SELECT * FROM CustomerTable WHERE (CustomerPostcode LIKE '%BT14%7D%')
然后返回预期的结果。
任何人都可以告诉为什么会这样吗?它与字符串中的字符有关吗?
由于
Clivest
答案 0 :(得分:1)
考虑使用单字符通配符(下划线)进行中间字符串匹配,并仅使用字符串末尾的百分比。
答案 1 :(得分:0)
%7D 在某些情况下是一个特殊的角色......也许这个也是?其他组合也会出现问题吗?