我正在使用查询命令来创建SQL Server表。我不希望列名与任何SQL Server关键字匹配(例如:use,create,...)。如何检查列名(在查询字符串中)与任何SQL Server关键字都不匹配?
更新1:
当然,除了创建关键字列表之外,然后进行并行比较。
答案 0 :(得分:4)
既然您是在问命名问题,请允许我给您一些建议,这将为您的问题提供一个可能的答案:
如果不确定,只需养成始终将[SquareBraces]
中的对象名称括起来的习惯,那么您对对象的称呼就无关紧要了。
但是,话虽如此,绝对最好遵循良好的惯例,无论是您工作场所中常见的惯例,还是遵循find another sensible惯例(有时似乎有关于命名约定的意见多于没有编码约定的人!)。
我的偏好设置(FWIW)简单来说就是:
[Order]
,[OrderLine]
,[Customer]
等。要回答您的原始问题,您会注意到{{ 1}}是此处的关键字,但是只要在其周围加上方括号,解析器就会知道它是一个对象。每次都有效,并且您不必为保存Order记录的表命名为人为或多余的名称,例如ORDER
。CustomerOrder
,[Customer_Contact]
等。[Product_ProductCategory]
,无论它是作为哪个键的主键,除非有很好的技术理由不这样做,这都是罕见的。[Id]
。为什么我将表命名为单数形式,而不是将表视为“客户”的集合,而是将其视为存储“客户”类型对象的存储库。在使用某些ORMs(在C#中我喜欢Dapper)时,这种方法特别有效(但在某些几乎要采用多元性的其他方法中,效果却不佳),因此您必须弄清楚最适合您,最适合您。
祝你好运!
答案 1 :(得分:2)
在编写脚本以创建表时,与关键字匹配的列名称的颜色将变为粉红色,蓝色,灰色。只需用[]
包裹相关的列即可。
示例:
CREATE TABLE MyTable([DateTime] datetime)
不确定系统数据库中是否存在系统表,您可以从中查询该表,但如果可能会使用它,请将其放到此处。