这些陈述之间是否存在根本区别?
“select * from id = 1的用户”
要么
“SELECT * FROM users WHERE id = 1”
要么
‘select * from id = 1’的用户
要么
‘SELECT * FROM users WHERE id = 1’
解决方法
您有两个不同的问题:
>是否对sql关键字使用大写或小写.这是一个品味问题.文档通常使用大写,但我建议您在特定项目中同意.
>如何使用您的宿主语言引用sql.由于字符串在sql中用单引号(‘)引用,我建议您使用双引号(“)来引用宿主语言中的sql语句(如果您的宿主语言是python,则引用tripple引号(”“”)). sql确实使用双引号,但仅适用于包含特殊字符的表,列和函数的名称,您通常可以避免使用它们.
在C/C++中,有第三个引用选项.如果您的编译器支持可变参数宏(在C99中引入),您可以定义:
#define sql(...) #__VA_ARGS__
并使用类似sql的sql(SELECT * FROM users WHERE id = 1).优点是这种方式字符串可以跨越多行,而引用的字符串必须分别引用每一行. python中的tripple引号用于同一目的.