【问题标题】:How to set parenthesis in column name in create table Sql query如何在创建表Sql查询中的列名中设置括号
【发布时间】:2015-01-08 04:55:48
【问题描述】:

我想在 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 ')' 或 ','.** 附近的语法不正确

如何解决?

【问题讨论】:

  • 这是否与您的其他问题有关:stackoverflow.com/questions/27799091/… ?您应该始终为可变长度字段指定大小(即VARCHAR(50) 而不仅仅是VARCHAR)。在某些情况下默认长度仅为1,而在其他情况下为30

标签: sql-server parentheses columnname


【解决方案1】:

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

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

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

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

Which "special" characters are allowed in SQL Server varchar fields?

What characters are valid in an SQL Server database name?

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

Characters that must be escaped in Tsql

【讨论】:

    【解决方案2】:

    把它放在[]里面就行了

    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,具体取决于使用方式/位置。

    【讨论】:

    • 您不应留下未指定长度的可变长度字段。 VARCHAR 和 NVARCHAR 有两个默认值,1 或 30,这取决于它的使用方式/位置。
    【解决方案3】:

    使用方括号

    [Like (this)]
    

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

    【讨论】:

    • 好的,但是我必须创建一个临时表来存储存储过程的结果。为此,我必须创建一个列名与存储过程相同的表,并且我的存储过程包含带有 ( )。
    • 没有相同结构需要的规则,可以在运行时更改名称。还要避免这件事,否则将来会产生问题。
    • @SRY_JAVA 不,插入结果的表不需要具有相同的列名。它们需要具有相同的数据类型(或隐式可转换的数据类型)。它们甚至不需要具有相同数量的字段:表需要至少具有相同的数量,但可以有更多的字段。如果表的字段多于 proc 返回的字段,请确保在 INSERT 中指定字段列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    相关资源
    最近更新 更多