Microsoft SQL Server 提供程序的函数映射

此页面说明使用 SQL Server 提供程序时,哪些 .NET 成员转换成哪些 SQL 函数。

聚合函数

.NET SQL
EF.Functions.StandardDeviationSample(group.Select(x => x.Property)) STDEV(Property)
英 孚。Functions.StandardDeviationPopulation(group.Select(x => x.Property)) STDEVP(Property)
EF.Functions.VarianceSample(group.Select(x => x.Property)) VAR(Property)
英 孚。Functions.VariancePopulation(group.Select(x => x.Property)) VARP(Property)
群。Average(x => x.Property) AVG(Property)
group.Count() COUNT(*)
group.LongCount() COUNT_BIG(*)
群。Max(x => x.Property) MAX(Property)
群。Min(x => x.Property) MIN(Property)
群。Sum(x => x.Property) SUM(Property)
字符串。Concat(group.Select(x => x.Property)) STRING_AGG(属性,N'')
字符串。Join(分隔符、组)。Select(x => x.Property)) STRING_AGG(属性, @separator)

二进制函数

.NET SQL
bytes.Contains(value) CHARINDEX(@value, 0 @bytes)>)
bytes.ElementAt(i) SUBSTRING(@bytes,@i + 1,1)
bytes.First() SUBSTRING(@bytes、1、1)
bytes.Length DATALENGTH(@bytes)
bytes.SequenceEqual(second) @bytes = @second
bytes[i] SUBSTRING(@bytes,@i + 1,1)
EF.Functions.DataLength(arg) DATALENGTH(@arg)

转换函数

.NET SQL
bytes.ToString() CONVERT(varchar(100), @bytes)
byteValue.ToString() CONVERT(varchar(3), @byteValue)
charValue.ToString() CONVERT(varchar(1), @charValue)
Convert.ToBoolean(value) CONVERT(bit, @value)
Convert.ToByte(value) CONVERT(tinyint, @value)
Convert.ToDecimal(value) CONVERT(decimal(18, 2), @value)
Convert.ToDouble(value) CONVERT(float, @value)
Convert.ToInt16(value) CONVERT(smallint, @value)
Convert.ToInt32(value) CONVERT(int,@value))
Convert.ToInt64(value) CONVERT(bigint、 @value)
Convert.ToString(value) CONVERT(nvarchar(max), @value)
dateOnly.ToString() CONVERT(varchar(100), @dateOnly)
dateTime.ToString() CONVERT(varchar(100), @dateTime)
dateTimeOffset.ToString() CONVERT(varchar(100), @dateTimeOffset)
decimalValue.ToString() CONVERT(varchar(100), @decimalValue)
doubleValue.ToString() CONVERT(varchar(100), @doubleValue)
floatValue.ToString() CONVERT(varchar(100), @floatValue)
guid.ToString() CONVERT(varchar(36), @guid)
intValue.ToString() CONVERT(varchar(11), @intValue)
longValue.ToString() CONVERT(varchar(20), @longValue)
sbyteValue.ToString() CONVERT(varchar(4), @sbyteValue)
shortValue.ToString() CONVERT(varchar(6), @shortValue)
timeOnly.ToString() CONVERT(varchar(100), @timeOnly)
timeSpan.ToString() CONVERT(varchar(100), @timeSpan)
uintValue.ToString() CONVERT(varchar(10), @uintValue)
ulongValue.ToString() CONVERT(varchar(19), @ulongValue)
ushortValue.ToString() CONVERT(varchar(5), @ushortValue)

日期和时间函数

.NET SQL
DateTime.Now GETDATE()
DateTime.Today CONVERT(date, GETDATE())
DateTime.UtcNow GETUTCDATE()
dateTime.AddDays(value) DATEADD(day、 @value、 @dateTime)
dateTime.AddHours(value) DATEADD(hour、 @value、 @dateTime)
dateTime.AddMilliseconds(value) DATEADD(毫秒,@value,@dateTime))
dateTime.AddMinutes(value) DATEADD(minute、 、 @value@dateTime)
dateTime.AddMonths(months) DATEADD(月, @months, @dateTime))
dateTime.AddSeconds(value) DATEADD(秒, @value, @dateTime))
dateTime.AddYears(value) DATEADD(year、 @value@dateTime)
dateTime.Date CONVERT(date、 @dateTime)
dateTime.Day DATEPART(day、 @dateTime)
dateTime.DayOfYear DATEPART(dayofyear, @dateTime)
dateTime.Hour DATEPART(小时, @dateTime)
dateTime.Microsecond DATEPART(微秒, @dateTime) % 1000) EF Core 10.0
dateTime.Millisecond DATEPART(毫秒, @dateTime)
dateTime.Minute DATEPART(分钟, @dateTime)
dateTime.Month DATEPART(月、 @dateTime)
dateTime.Nanosecond DATEPART(nanosecond,@dateTime) % 1000) EF Core 10.0
dateTime.Second DATEPART(second, @dateTime)
dateTime.TimeOfDay CONVERT(time,@dateTime))
dateTime.Year DATEPART(year、 @dateTime)
DateTimeOffset.Now SYSDATETIMEOFFSET()
DateTimeOffset.UtcNow SYSUTCDATETIME()
dateTimeOffset.AddDays(days) DATEADD(day、 @days、 @dateTimeOffset)
dateTimeOffset.AddHours(hours) DATEADD(hour、 @hours、 @dateTimeOffset)
dateTimeOffset.AddMilliseconds(milliseconds) DATEADD(毫秒,@milliseconds,@dateTimeOffset))
dateTimeOffset.AddMinutes(minutes) DATEADD(minute、 、 @minutes@dateTimeOffset)
dateTimeOffset.AddMonths(months) DATEADD(月, @months, @dateTimeOffset))
dateTimeOffset.AddSeconds(seconds) DATEADD(秒, @seconds, @dateTimeOffset))
dateTimeOffset.AddYears(years) DATEADD(year、 @years@dateTimeOffset)
dateTimeOffset.Date CONVERT(date、 @dateTimeOffset)
dateTimeOffset.Day DATEPART(day、 @dateTimeOffset)
dateTimeOffset.DayOfYear DATEPART(dayofyear, @dateTimeOffset)
dateTimeOffset.Hour DATEPART(小时, @dateTimeOffset)
dateTimeOffset.Microsecond DATEPART(微秒, @dateTimeOffset) % 1000) EF Core 10.0
dateTimeOffset.Millisecond DATEPART(毫秒, @dateTimeOffset)
dateTimeOffset.Minute DATEPART(分钟, @dateTimeOffset)
dateTimeOffset.Month DATEPART(月、 @dateTimeOffset)
dateTimeOffset.Nanosecond DATEPART(nanosecond,@dateTimeOffset) % 1000) EF Core 10.0
dateTimeOffset.Second DATEPART(second, @dateTimeOffset)
dateTimeOffset.TimeOfDay CONVERT(time,@dateTimeOffset))
dateTimeOffset.ToUnixTimeSeconds() DATEDIFF_BIG(second, '1970-01-01T00:00:00.0000000+00:00', @dateTimeOffset)
dateTimeOffset.ToUnixTimeMilliseconds() DATEDIFF_BIG(毫秒,“1970-01-01T00:00:00.0000000+00:00”) @dateTimeOffset)
dateTimeOffset.Year DATEPART(year、 @dateTimeOffset)
DateOnly.FromDateTime(dateTime) CONVERT(date、 @dateTime)
dateOnly.AddDays(value) DATEADD(day、 @value、 @dateOnly)
dateOnly.AddMonths(months) DATEADD(月, @months, @dateOnly))
dateOnly.AddYears(value) DATEADD(year、 @value@dateOnly)
dateOnly.Day DATEPART(day、 @dateOnly)
dateOnly.DayOfYear DATEPART(dayofyear, @dateOnly)
dateOnly.Month DATEPART(月、 @dateOnly)
dateOnly.Year DATEPART(year、 @dateOnly)
dateOnly.DayNumber DATEDIFF(day, '0001-01-01', @dateOnly) EF Core 10.0
英 孚。Functions.AtTimeZone(dateTime,timeZone) @dateTime 在时区 @timeZone
英 孚。Functions.DateDiffDay(start、end) DATEDIFF(day, @start, @end))
EF.Functions.DateDiffHour(start, end) DATEDIFF(hour, @start, @end))
EF.Functions.DateDiffMicrosecond(start, end) DATEDIFF(microsecond, @start, @end))
英 孚。Functions.DateDiffMillisecond(start、end) DATEDIFF(毫秒,@start,@end))
EF.Functions.DateDiffMinute(start,end) DATEDIFF(分钟,@start,@d2))
EF.Functions.DateDiffMonth(start,end) DATEDIFF(month, @start, @end))
EF.Functions.DateDiffNanosecond(start,end) DATEDIFF(nanosecond, @start, @end))
英 孚。Functions.DateDiffSecond(start、end) DATEDIFF(second,@start,@end))
EF.Functions.DateDiffWeek(start,end) DATEDIFF(week、 @start@end)
英 孚。Functions.DateDiffYear(start、end) DATEDIFF(year, @start, @end))
英 孚。Functions.DateFromParts(year、month、day) DATEFROMPARTS(@year, @month, @day)
英 孚。Functions.DateTime2FromParts(year、month、day、...) DATETIME2FROMPARTS(@year、 @month、 @day...)
英 孚。Functions.DateTimeFromParts(year、month、day、...) DATETIMEFROMPARTS(@year、 @month、 @day...)
EF.Functions.DateTimeOffsetFromParts(year、month、day、...) DATETIMEOFFSETFROMPARTS(@year、、@month@day...)
EF.Functions.IsDate(expression) ISDATE(@expression)
英 孚。Functions.SmallDateTimeFromParts(year、month、day、...) SMALLDATETIMEFROMPARTS(@year、、@month@day...)
EF.Functions.TimeFromParts(小时、分钟、秒、...) TIMEFROMPARTS(@hour、、@minute@second...)
timeOnly.AddHours(value) DATEADD(hour、 @value、 @timeOnly)
timeOnly.AddMinutes(value) DATEADD(minute、 、 @value@timeOnly)
timeOnly.Hour DATEPART(小时, @timeOnly)
timeOnly.IsBetween(start,end) @timeOnly >= @start AND @timeOnly<@end
timeOnly.Microsecond DATEPART(微秒, @timeOnly) % 1000) EF Core 10.0
timeOnly.Millisecond DATEPART(毫秒, @timeOnly)
timeOnly.Minute DATEPART(分钟, @timeOnly)
timeOnly.Nanosecond DATEPART(nanosecond,@timeOnly) % 1000) EF Core 10.0
timeOnly.Second DATEPART(second, @timeOnly)
timeSpan.Hours DATEPART(小时, @timeSpan)
timeSpan.Microsecond DATEPART(微秒, @timeSpan) % 1000) EF Core 10.0
timeSpan.Milliseconds DATEPART(毫秒, @timeSpan)
timeSpan.Minutes DATEPART(分钟, @timeSpan)
timeSpan.Nanosecond DATEPART(nanosecond,@timeSpan) % 1000) EF Core 10.0
timeSpan.Seconds DATEPART(second, @timeSpan)

数值函数

.NET SQL
double.DegreesToRadians(x) RADIANS(@x)
double.RadiansToDegrees(x) DEGREES(@x)
EF.Functions.Random() RAND()
Math.Abs(value) ABS(@value)
Math.Acos(d) ACOS(@d)
Math.Asin(d) ASIN(@d)
Math.Atan(d) ATAN(@d)
Math.Atan2(y,x) ATN2(@y, @x)
Math.Ceiling(d) CEILING(@d)
Math.Cos(d) COS(@d)
Math.Exp(d) EXP(@d)
Math.Floor(d) FLOOR(@d)
Math.Log(d) LOG(@d)
Math.Log(a, newBase) LOG(@a, @newBase)
Math.Log10(d) LOG10(@d)
Math.Max(x, y) GREATEST(@x, @y) EF Core 9.0
Math.Min(x, y) LEAST(@x, @y) EF Core 9.0
Math.Pow(x, y) POWER(@x, @y)
Math.Round(d) ROUND(@d,0)
Math.Round(d, 小数位) ROUND(@d,@decimals))
Math.Sign(value) SIGN(@value)
Math.Sin(a) SIN(@a)
Math.Sqrt(d) SQRT(@d)
Math.Tan(a) TAN(@a)
Math.Truncate(d) ROUND(@d、0、1)

提示

除了此处列出的方法外,还将转换相应的泛型数学实现和 MathF 方法。 例如,Math.SinMathF.Sindouble.Sinfloat.Sin 全部映射到 SQL 中的 SIN 函数。

字符串函数

.NET SQL
EF.Functions.Collate(操作数, 排序规则) @operand 整理 @collation
英 孚。Functions.Contains(propertyReference, searchCondition) CONTAINS(@propertyReference, @searchCondition)
英 孚。Functions.Contains(propertyReference、searchCondition、languageTerm) CONTAINS(@propertyReference、 @searchCondition语言 @languageTerm)
英 孚。Functions.FreeText(propertyReference,freeText) FREETEXT(@propertyReference, @freeText)
英 孚。Functions.FreeText(propertyReference,freeText,languageTerm) FREETEXT(@propertyReference、 @freeText语言 @languageTerm)
EF.Functions.IsNumeric(expression) ISNUMERIC(@expression)
EF.Functions.Like(matchExpression,pattern) @matchExpression 喜欢 @pattern
英 孚。Functions.Like(matchExpression, pattern, escapeCharacter) @matchExpression LIKE @pattern ESCAPE @escapeCharacter
字符串Compare(strA,strB) CASE WHEN @strA = @strB THEN 0 ...End
字符串。Concat(str0,str1) @str0 + @str1
string.IsNullOrEmpty(value) @value 为 NULL 或 @value 类似于 N''
string.IsNullOrWhiteSpace(value) @value 为 NULL 或 @value = N''
string.Join(", ", new [] { x, y, z }) CONCAT_WS(N', ', , @x, @y@z) EF Core 9.0
stringValue.CompareTo(strB) CASE WHEN @stringValue = @strB THEN 0 ...End
stringValue.Contains(value) @stringValue LIKE N'%' + + @value N'%'
stringValue.EndsWith(value) @stringValue LIKE N'%' + @value
stringValue.FirstOrDefault() SUBSTRING(@stringValue、1、1)
stringValue.IndexOf(value) CHARINDEX(@value, @stringValue) - 1
stringValue.IndexOf(value, startIndex) CHARINDEX(@value, @stringValue, @startIndex) - 1)
stringValue.LastOrDefault() SUBSTRING(@stringValue,LEN(@stringValue),1)
stringValue.Length LEN(@stringValue)
stringValue.Replace(@oldValue, @newValue) REPLACE(@stringValue, @oldValue, @newValue))
stringValue.StartsWith(value) @stringValue LIKE @value + N'%'
stringValue.Substring(startIndex) SUBSTRING(@stringValue, @startIndex + 1, LEN(@stringValue))
stringValue.Substring(startIndex,length) SUBSTRING(@stringValue, @startIndex + 1, @length))
stringValue.ToLower() LOWER(@stringValue)
stringValue.ToUpper() UPPER(@stringValue)
stringValue.Trim() LTRIM(RTRIM(@stringValue))
stringValue.TrimEnd() RTRIM(@stringValue)
stringValue.TrimStart() LTRIM(@stringValue)

其他函数

.NET SQL
enumValue.HasFlag(flag) @enumValue & @flag = @flag
Guid.NewGuid() NEWID()
nullable.GetValueOrDefault() COALESCE(@nullable,0)
nullable.GetValueOrDefault(defaultValue) COALESCE(@nullable, @defaultValue)

注意

为了说明目的,简化了一些 SQL 翻译。 实际的 SQL 更复杂,可以处理更广泛的值。

另请参阅