首页 理论教育 函数映射:函数间的映射

函数映射:函数间的映射

时间:2023-11-17 理论教育 版权反馈
【摘要】:表6SQL Server与MySQL中部分名字不同但使用相同的函数5.1.2.2函数之间的1:n 映射在SQL Server中,也有一些函数,在MySQL中不能找到与之直接对应的函数,但是可以根据语义由一个或若干个函数来组合处理。

函数映射:函数间的映射

5.1.2.1 函数之间的1:1 映射

SQL Server中的大部分函数都能在MySQL中找到实现相同功能的函数。有的函数名称、功能、使用方法以及执行结果均相同,例如函数cast可用于转换类型,无论是在SQL Server中还是在MySQL中执行“select cast[39 as char(2)]”都能得到同样的结果;函数substring用来截取字符串,在SQL Server和MySQL中的使用没有区别。类似的函数还有ASCII、LEFT、LOWER、LTRIM、REPLACE、REVERSE、RIGHT、RTRIM、SUBSTRING、UPPER、ABS、CEILING、EXP、FLOOR、LOG、PI、POWER、RAND、SIGN、SQRT、DATEDIFF等。

然而还有一部分函数,虽然它们名称不一样,但是功能、使用方法以及执行结果却是相同的,例如,在SQL Server中执行“select round (12.89,1)”,能对数值12.89 进行末尾的四舍五入操作,返回的结果是12.9,在MySQL中执行“select format(12.89,1)”,能实现同样的功能,返回同样的结果;在SQL Server中执行“select getdate()”可以获取当前日期和时间,而在MySQL中要获得当前的日期和时间用的是函数now()。表6 中给出的是部分名字不同、但是使用相同的函数。

表6 SQL Server与MySQL中部分名字不同但使用相同的函数

5.1.2.2 函数之间的1:n 映射

在SQL Server中,也有一些函数,在MySQL中不能找到与之直接对应的函数,但是可以根据语义由一个或若干个函数来组合处理。例如,SQL Server中的DATEADD函数,它用来在日期中添加或减去指定的时间间隔。

其中datepart是间隔数的单位,大到可以是年,小到可以是纳秒;date参数是合法的日期表达式;number是间隔数,若number为正数,则该函数是在日期中添加指定的时间间隔,若number为负数,则该函数是在日期中减去指定的时间间隔。(www.xing528.com)

在MySQL中,对应于两个函数DATE_ADD()和DATE_SUB(),其中DATE_ADD()用来向日期添加指定的时间间隔,DATE_SUB()用来向日期减少指定的时间间隔。

其中,参数date的含义与DATEADD函数中的date参数含义一样,都表示合法的日期表达式;expr参数对应于DATEADD函数中的number参数,表示时间间隔;type参数对应于DATEADD函数中的datepart参数。

在数据移植中,DATEADD函数的转换,需要增加对number参数取值的判断,若number取值为正数,则映射为DATE_ADD()函数;若number取值为负数,则映射为DATE_ SUB()函数。

5.1.2.3 函数之间无映射

异构数据库由于逻辑/物理组织和安全模型上的差异性,有些函数是数据库自身所特有的,无法在另一个数据库中找到与之相对应的函数。例如,SQL Server中的IDENTITY函数。

其中data_type表示的是数据类型,seed 是第一个赋值,increment是连续行之间的增量。该函数在MySQL中找不到与之相对应的函数。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈