Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Linq to Entities (EF 4.1):Wie mache ich ein SQL LIKE mit einem Platzhalter in der Mitte ('%term%term%')?

Ich glaube, Sie könnten SqlFunctions verwenden. PatIndex :

dt.Table.Where(p => SqlFunctions.PatIndex(term, p.fieldname) > 0);

SqlFunctions.PatIndex verhält sich genauso wie SQL LIKE Operator. Es unterstützt alle Standard-Platzhalterzeichen, einschließlich:

  • % Jede Zeichenfolge aus null oder mehr Zeichen.
  • _ (Unterstrich) Ein beliebiges einzelnes Zeichen.
  • [ ] Jedes einzelne Zeichen innerhalb des angegebenen Bereichs ([a-f]) oder Satzes ([abcdef]).
  • [^] Jedes einzelne Zeichen, das nicht innerhalb des angegebenen Bereichs ([^a-f]) oder Satzes ([^abcdef]) liegt.

SqlFunctions.PatIndex ist oft verfügbar, wenn SqlMethods.Like nicht verfügbar ist (einschließlich innerhalb von MVC-Controllern)