egg*_*rtx 5 sql go code-readability
我正在研究Go中的一个程序,它会大量使用MySQL.为了便于阅读,是否可以在INSERT语句中的每个列名后包含列的值?喜欢:
INSERT INTO `table` (`column1` = 'value1', `column2` = 'value2'...);
Run Code Online (Sandbox Code Playgroud)
代替
INSERT INTO `table` (`column`, `column2`,...) VALUES('value1', 'value2'...);
Run Code Online (Sandbox Code Playgroud)
因此,考虑到SQL字符串通常可以获得相当长的时间,因此更容易看出哪个值与哪个列相关联
不,您不能使用您建议的语法(尽管它会很好)。
一种方法是排列列名称和值:
INSERT INTO `table`
(`column`, `column2`,...)
VALUES
('value1', 'value2'...);
Run Code Online (Sandbox Code Playgroud)
更新响应您的评论“语句包含来自字符串外部的变量”:如果您参数化 SQL 语句,那么将列名与变量匹配很容易检查参数是否为各自的列命名:@ColumnName。
这实际上是我在 TSQL 脚本中执行此操作的方法:
INSERT INTO `table`
(
`column`,
`column2`,
...
)
VALUES
(
'value1',
'value2',
...
);
Run Code Online (Sandbox Code Playgroud)
(将逗号放在行首也很常见)
但说实话,一旦你获得了足够多的列,就很容易混淆列的位置。如果它们具有相同的类型(和相似的值范围),您可能不会立即注意到......