Linq to SQL喜欢使用"#"标志

时间:2016-03-03 18:48:46

标签: sql-server vb.net linq

有一个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%所以它显然没有返回值我在找。

有人能说清楚这里发生了什么吗?

谢谢!

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)。