有一个linq到sql"喜欢"查询(VB.Net)使用它作为比较值:
%HIPP,%JOHN%A%LLLP%#1%
以下是查询:
docs.Where(Function(d)d.Parties.Where(Function(p)p.PartyName like partyName and p.PartyName<>"" and p.PartyType = 2)。任何)
partyName =%HIPP,%JOHN%A%LLLP%#1%
然而,当在SQL Server中分析查询时,"#"正如[0-9]所示,所以sql语句说" ...其中字段如%HIPP,%JOHN%A%LLLP%[0-9] 1%所以它显然没有返回值我在找。
有人能说清楚这里发生了什么吗?
谢谢!
答案 0 :(得分:1)
根据MSDN:
要匹配特殊字符左括号([),问号(?),数字符号(#)和星号(*),请将它们括在括号中。
所以你的搜索字词应该是
HIPP,*JOHN*A*LLLP*[#]1*
请注意,您还应使用*
代替%
。
另请注意,您可以使用...
p.PartyName.Contains(partyName)
...转换为LIKE
。它将partyName
括在%
个字符中并转义通配符:Contains("a%")
被翻译为LIKE '%a~%%' ESCAPE '~'
。
或者...
SqlMethods.Like(p.PartyName, partyName)
...按原样使用partyName
,并像LIKE
一样处理通配符(SQL)。