我可以在SQL Server和C#数据表的列名中使用特殊字符吗

时间:2019-06-07 05:46:04

标签: c# sql-server azure-sql-database

我是否可以在SQL Server表列名称和C#数据中使用特殊字符%$+-#桌子?

我试图在SQL Server中使用这些字符创建表,但表已创建,但我想知道它的可能与否?

3 个答案:

答案 0 :(得分:5)

正如您所解释的那样,您可以这样做,因为您的列名位于方括号之间,但这不是一个好习惯,在列名中使用空格和特殊字符。

CREATE TABLE [TABLE1] (ID UNIQUEIDENTIFIER, [% Column1] INT, [$ Column2] INT, [+ Column3] 
INT, [- Column4] INT, [# Column5] INT);

INSERT INTO [TABLE1] (ID, [% Column1], [$ Column2], [+ Column3], [- Column4], [# Column5])
VALUES ('8C012194-5D8A-4A58-B225-F33F60875499',1, 2, 3, 4, 5)

如果您使用的是Entity Framework,可以将列映射到模型类,如下所示:

[Table("Table1")]
public class Test 
{
  public Guid Id { get; set; }

  [Column("% Column1")]
  public int Column1 { get; set; }

  [Column("$ Column2")]
  public int Column2 { get; set; }

  [Column("+ Column3")]
  public int Column3 { get; set; }

  [Column("- Column4")]
  public int Column4 { get; set; }

  [Column("# Column5")]
  public int Column5 { get; set; }

}

答案 1 :(得分:2)

Azure sql在列名中支持这些特殊字符。

因为SQL Server数据类型的column_name是nvarchar(128)。 enter image description here

您可以从以下文档获取此文档:COLUMNS (Transact-SQL)

对于C#,如mukesh kudi所说,您应该使用[]括号。

例如,如果要选择带有特殊字符“#”的列,则代码应如下所示:

var rows = dt.Select("","[#]");

您可以引用此博客:How to access an column with special characters using DataTable.Select()?

希望这会有所帮助。

答案 2 :(得分:0)

欢迎使用SO,您可以使用带有特殊字符或空格的列名,但必须使用

  

方括号[]

以访问这些列。

例如

Table
%ID
1
2
3


Select [%ID] from Table

有关MSSQL Server的列名和表名规则的详细信息,您可以签出msdn