Skip to main content

Dialects

Every builder and extension method requires an ISqlDialect instance. Choose the one matching your database engine.

FeatureSqlServerDialectPostgreSqlDialectMySqlDialectSqliteDialectOracleDialect
Parameter prefix@@@@:
Column quoting[col]"col"`col`"col""col"
Table quoting[tbl]"tbl"`tbl`"tbl""tbl"
Case-insensitive LIKELOWER([col]) LIKE LOWER(@p)"col" ILIKE @pLOWER(`col`) LIKE LOWER(@p)LOWER("col") LIKE LOWER(@p)LOWER("col") LIKE LOWER(:p)
TOP / LIMITTOP N (no OFFSET) / OFFSET … ROWS FETCH NEXT N ROWS ONLYLIMIT N OFFSET MLIMIT N OFFSET MLIMIT N OFFSET MFETCH FIRST N ROWS ONLY
TRUNCATE supportYesYesYesNo (throws)Yes
MERGE supportYesNoNoNoNo
OUTPUT INSERTED/DELETEDYesNoNoNoNo
RETURNING clauseNoYesYes (INSERT only)YesNo
ON CONFLICTNoYesNoYesNo
ON DUPLICATE KEYNoNoYesNoNo
INSERT OR IGNORE/REPLACENoNoNoYesNo
FOR UPDATE / FOR SHARENo (use WithHint)YesYesNo (silently ignored)Yes
NULLS FIRST/LASTNo (silently ignored)YesNoYesYes
Recursive CTE keyword(omitted)RECURSIVERECURSIVERECURSIVE(omitted)
UPDATE … FROM/JOINYes (FROM after SET)Yes (FROM after SET)Yes (JOIN before SET)NoNo
IS DISTINCT FROMEmulatedNativeEmulatedNativeEmulated
Date part extractionDATEPART(part, col)EXTRACT(part FROM col)EXTRACT(part FROM col)strftime('%Y', col)EXTRACT(part FROM col)
Current timestampGETDATE()NOW()NOW()CURRENT_TIMESTAMPSYSDATE
String lengthLEN(col)LENGTH(col)LENGTH(col)LENGTH(col)LENGTH(col)
String concatenationa + ba || bCONCAT(a, b)a || ba || b
TrimLTRIM(RTRIM(col))TRIM(col)TRIM(col)TRIM(col)TRIM(col)

Usage

ISqlDialect dialect = new SqlServerDialect();
ISqlDialect dialect = new PostgreSqlDialect();
ISqlDialect dialect = new MySqlDialect();
ISqlDialect dialect = new SqliteDialect();
ISqlDialect dialect = new OracleDialect();