2

我想在 SQL Server2012 中创建一个表,其列名包括括号

create table temp_sp 
( 
    logtime datetime,
    vcs_api varchar,
    L3(S1)Status varchar,
    L3(S2)Status varchar,
    beam_current real,
    beam_energy real,
    st1_vs1_bag1_rb real,
    ring_avg_pressure real
)

但是当我使用括号时L3(S1)StatusL3(S2)Status我得到一个错误

'('.Expecting ')' 或 ','.** 附近的语法不正确

如何解决?

4

3 回答 3

10

括号、单逗号是 sqlserver 的保留字。一般避免这种事情。

仍然需要,您需要为此使用 Bracket[]来告诉 sqlserver 它是字符串,而不是保留字。

所以[L3(S1)] Status varchar 这对你有用。

好文章:- http://technet.microsoft.com/en-us/library/aa224033%28v=sql.80%29.aspx

SQL Server varchar 字段中允许使用哪些“特殊”字符?

SQL Server 数据库名称中的哪些字符有效?

http://msdn.microsoft.com/en-us/library/ms175874.aspx

Tsql中必须转义的字符

于 2015-01-08T05:05:50.973 回答
3

把它放在里面[]

create table temp_sp (

    logtime datetime,

    vcs_api varchar,

    [L3(S1)Status] varchar,

    [L3(S2)Status] varchar,

    beam_current real,

    beam_energy real,

    st1_vs1_bag1_rb real,

    ring_avg_pressure real

)

编辑:正如下面的评论所述:您不应该留下未指定长度的可变长度字段。VARCHAR 和 NVARCHAR 有两个默认值,1 或 30,这取决于它的使用方式/位置。

于 2015-01-08T04:57:13.863 回答
2

使用方括号

[Like (this)]

但不要这样做。它使你所有的 SQL 都难以编写,也可能使 SP 和代码调用更加困难。

于 2015-01-08T04:58:27.743 回答