现在它生成像这样的插入
INSERT [Bla] ([id], [description], [name], [version])
VALUES (CAST(1 AS Numeric(19, 0)), convert(t...
它非常特定于 SQL Server。我想创建一个每个人都可以使用的脚本,与数据库无关。我有非常简单的数据类型 - varchars、数字、日期、位( bool 值)。
我觉得
insert into bla values (1, 'die', '2001-01-01 11:11:11')
应该适用于所有 DBMS,对吧?
最佳答案
一些基本规则:
去掉方括号。在您的情况下,不需要它们——甚至在 SQL Server 中也不需要。 (同时确保您从不在列名或表名中使用保留字或特殊字符)。
如果您确实需要使用特殊字符或保留字(我不推荐这样做),请使用标准双引号(例如“GROUP”)。
但请记住,名称区分大小写:my_table
与 MY_TABLE
相同,但 "my_table"
与 "不同MY_TABLE"
根据标准。同样,这可能因 DBMS 及其配置而异。
CAST 运算符是标准的,适用于大多数 DBMS(尽管并非所有都支持所有可能组合中的转换)。
convert() 是特定于 SQL Server 的,应替换为适当的 CAST 表达式。
尝试以正确的数据类型指定值,永远不要依赖隐式数据转换(因此不要将“1”用作数字)。尽管我认为不需要将 1 强制转换为 numeric() 。
通常我还建议对 DATE/TIMESTAMP 文字使用 ANSI 文字(例如 DATE '2011-03-14'
),但 SQL Server 不支持。所以它不会对你有太大帮助。
关于sql - 如何从 SQL Server 创建可移植插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5296363/