SQL Server 函数映射的规范化概念模型

本主题介绍概念模型规范函数如何映射到相应的 SQL Server 函数。

日期和时间函数

下表描述了日期和时间函数映射:

规范函数 SQL Server 函数
AddDays(表达式) DATEADD(day, number, date)
AddHours(表达式) DATEADD(hour, number, date)
AddMicroseconds(表达式) DATEADD(microsecond, number, date)
AddMilliseconds(表达式) DATEADD(millisecond, number, date)
AddMinutes(表达式) DATEADD(minute, number, date)
AddMonths(表达式) DATEADD(month, number, date)
AddNanoseconds(表达式) DATEADD(nanosecond, number, date)
AddSeconds(表达式) DATEADD(second, number, date)
AddYears(表达式) DATEADD(year, number, date)
CreateDateTime(year、month、day、hour、minute、second) 对于 SQL Server 2000 和 SQL Server 2005,格式化的 datetime 值在服务器上创建。 对于 SQL Server 2008 及更高版本,将在服务器上创建一个 datetime2 值。
CreateDateTimeOffset(year、month、day、hour、minute、second、tzoffset) 在服务器上创建了一个格式化的datetimeoffset值。

SQL Server 2000 或 SQL Server 2005 不支持。
CreateTime(小时、分钟、秒) 在服务器上创建了一个格式化的time值。

SQL Server 2000 或 SQL Server 2005 不支持。
CurrentDateTime() SysDateTime()(在 SQLServer 2008 中)。

GetDate() 在 SQLServer 2000 和 SQLServer 2005 中。
CurrentDateTimeOffset() SysDateTimeOffset()(在 SQL Server 2008 中)。

SQL Server 2000 或 SQL Server 2005 不支持。
CurrentUtcDateTime() SysUtcDateTime()(在 SQLServer 2008 中)。 GetUtcDate() 在 SQL Server 2000 和 SQL Server 2005 中。
DayOfYear(表达式) DatePart(dayofyear, expression)
Day(表达式) DatePart(day, expression)
DiffDays(startExpression, endExpression) DATEDIFF(day, startdate, enddate)
DiffHours(startExpression, endExpression) DATEDIFF(hour, startdate, enddate)
DiffMicroseconds(startExpression, endExpression) DATEDIFF(microsecond, startdate, enddate)
DiffMilliseconds(startExpression, endExpression) DATEDIFF(millisecond, startdate, enddate)
DiffMinutes(startExpression, endExpression) DATEDIFF(minute, startdate, enddate)
DiffNanoseconds(startExpression, endExpression) DATEDIFF(nanosecond, startdate, enddate)
DiffSeconds(startExpression, endExpression) DATEDIFF(second, startdate, enddate)
DiffYears(startExpression, endExpression) DATEDIFF(year, startdate, enddate)
GetTotalOffsetMinutes(DateTimeOffset) DatePart(tzoffset, expression)
Hour(表达式) DatePart(hour, expression)
毫秒(表达式) DatePart(millisecond, expression)
Minute(表达式) DatePart(minute, expression)
月份(表达式) DatePart(month, expression)
秒(表达式) DatePart(second, expression)
Truncate(表达式) 对于 SQL Server 2000 和 SQL Server 2005,在服务器上创建被截断的带格式的 datetime 值。 对于 SQL Server 2008 及更高版本,在服务器上创建被截断的 datetime2datetimeoffset 值。
Year(expression) DatePart(YEAR, expression)

聚合函数

下表描述了聚合函数映射:

规范函数 SQL Server 函数
Avg(expression) AVG(expression)
BigCount(表达式) BIGCOUNT(expression)
Count(表达式) COUNT(expression)
Min(表达式) MIN(expression)
Max(表达式) MAX(expression)
StDev(表达式) STDEV(expression)
StDevP(表达式) STDEVP(expression)
Sum(表达式) SUM(expression)
Var(表达式) VAR(expression)
VarP(表达式) VARP(expression)

数学函数

下表描述了数学函数映射:

规范函数 SQL Server 函数
Abs(value) ABS(value)
Ceiling(value) CEILING(value)
Floor(value) FLOOR(value)
Power(value) POWER(value, exponent)
Round(value) ROUND(value, digits, 0)
截断 ROUND(value , digits, 1)

字符串函数

下表描述了字符串函数映射:

规范函数 SQL Server 函数
Contains(string, target) CHARINDEX(target, string)
Concat(string1, string2) string1 + string2
EndsWith(string, target) CHARINDEX(REVERSE(target), REVERSE(string)) = 1

注意 如果CHARINDEX存储在固定长度字符串列中并且false是常量,string函数将返回target。 在这种情况下,将搜索整个字符串,包括任何填充尾随空格。 可能的解决方法是在将字符串传递给函数之前剪裁固定长度字符串 EndsWith 中的数据,如以下示例所示: EndsWith(TRIM(string), target)
IndexOf(target,string2) CHARINDEX(target, string2)
左 (string1, length) LEFT(string1, length)
长度(字符串) LEN(string)
LTrim(string) LTRIM(string)
右 (string1, length) RIGHT (string1, length)
Trim(string) LTRIM(RTRIM(string))
替换 (string1, string2, string3) REPLACE(string1, string2, string3)
反向 (字符串) REVERSE (string)
RTrim(string) RTRIM(string)
StartsWith(string, target) CHARINDEX(target, string)
Substring(string, start, length) SUBSTRING(string, start, length)
ToLower(string) LOWER(string)
ToUpper(string) UPPER(string)

位函数

下表描述了按位函数映射:

规范函数 SQL Server 函数
BitWiseAnd (value1, value2) value1 和 value2
BitWiseNot (值) ~价值
BitWiseOr (value1,value2) value1 |value2
BitWiseXor (value1,value2) value1 ^ value2