可在SQL Server,mySQL和postgreSQL中使用的可移植SQL

时间:2009-12-03 13:04:47

标签: mysql sql-server tsql postgresql

我想知道是否有编写SQL代码的指导方针,这些代码在SQL Server,mySQL以及postgreSQL中兼容。我正在编写一个程序,用户可以选择后端数据库。我很难为每个db创建单独的查询。我不想使用ORM或类似的东西。

感谢您的时间。

2 个答案:

答案 0 :(得分:3)

嗯,您可以选择的最佳路径包括采用SQL ISO标准。

Postgres和MySQL是重要的支持者,但我不知道你是否可以对SQL Server说同样的话。

无论如何,我认为ORM解决方案对你来说是最好的,因为它们通常很好地抽象出这些差异。

但是如果你不想使用它,你总是可以将查询存储在不同的存储库中,每个存储库用于特定的数据库并在运行时加载它们。

答案 1 :(得分:1)

遵循SQL:2003标准。

将代码从一个系统移植到另一个系统时进行单元测试。

如果没有查看它们在dbms中的实现方式以及它们作为参数接受的内容,请不要使用函数。

要注意的事项:一些SUBSTRING函数在一个系统中基于0,在另一个系统中基于1。 DATEDIFF的工作方式也不同。某些dbms的日期时间数据类型有微秒,有些则没有。

话虽如此,编写真正可移植的SQL是一个梦想......但真正可移植真的很重要吗?熟练的DBA应该知道差异很小并快速移植SQL代码。