【问题标题】:Can I use special characters in column name in SQL Server and C# data table我可以在 SQL Server 和 C# 数据表的列名中使用特殊字符吗
【发布时间】:2019-06-07 05:46:04
【问题描述】:

我有疑问能否在 SQL Server 表列名和 C# 数据表中使用特殊字符 %$+-#

我尝试在 SQL Server 中使用这些字符创建一个表,该表已创建,但我想知道它是否可能?

【问题讨论】:

  • 你为什么要这么做?
  • 可以,但如果可以避免,请不要这样做,因为无法保证您使用的其他工具能够读取它们
  • 真的 - 只是不要这样做。将此视为一种格式设置,并对表示层中的列进行任何特殊命名。老实说,将来任何不得不使用您的桌子的人都会诅咒您。
  • 我们通常不建议您在列名中使用特殊字符。关于你的问题,请看我的回答。
  • 如果我的回复有帮助,请标记为答案(在我的回复左侧,有标记选项),谢谢,祝您愉快!

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


【解决方案1】:

如前所述,您可以使用方括号括起来的列名,但在列名中使用空格和特殊字符不是一个好习惯。

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)

如果您使用的是实体框架,您可以将列映射到您的模型类,如下所示:

[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; }

}

【讨论】:

    【解决方案2】:

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

    因为 SQL Server 数据类型 column_name 是 nvarchar(128)。

    您可以通过以下方式获取此文档:COLUMNS (Transact-SQL)

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

    例如,如果要选择带有特殊字符“#”的列,代码应该是这样的:

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

    你可以参考这个博客:How to access an column with special characters using DataTable.Select()?

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

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

      方括号[]

      为了访问这些列。

      例如。

      Table
      %ID
      1
      2
      3
      
      
      Select [%ID] from Table
      

      有关 MSSQL Server 的列名和表名规则的更多信息,您可以查看msdn

      【讨论】:

        猜你喜欢
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多