Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Korzystanie z wbudowanej funkcji konwertowania sql w kryteriach hibernacji

Gdybyś mógł zaakceptować CAST zamiast CONVERT (I jestem prawie pewien, że możesz) , wtedy jest prostsze rozwiązanie.

Zamiast wywoływać „związany z SQL Server” funkcja, nazwijmy abstrakcję, która powinna działać na większości serwerów DB (na podstawie obsługiwanych dialektów NHibernate)

Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))

Więc Restriction używane w WHERE klauzula może wyglądać tak:

Restrictions
    .Like (
        Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
        , "2009"
        , MatchMode.Anywhere
    )

Wynik wygenerowany przez NHibernate przy użyciu dialektu SQL Server to:

WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przekonwertować wielkie litery na małe w programie SQL Server — LOWER()

  2. Bardziej elegancki sposób na ucieczkę od dynamicznego SQL?

  3. Jak wykonać procedurę składowaną raz dla każdego wiersza zwróconego przez zapytanie?

  4. Nie używaj sp_depends w SQL Server (jest przestarzałe)

  5. Dziwny znak w bazie danych SQL