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

taor4pac  于 2023-01-29  发布在  SQL Server
关注(0)|答案(3)|浏览(147)

我怀疑是否可以在SQL Server表列名和C#数据表中使用特殊字符%$+-#
我试着在SQL Server中创建一个带有这些字符的表,但我想知道它是否可能?

sz81bmfz

sz81bmfz1#

如前所述,您可以这样做,因为列名位于方括号中,但在列名中使用空格和特殊字符并不是一个好习惯。

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)

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

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

}
2ul0zpep

2ul0zpep2#

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()?
希望这个有用。

fzwojiic

fzwojiic3#

欢迎来到SO,您可以有特殊字符或空格列名,但你必须使用
方括号[]
以便访问这些列。
例如

Table
%ID
1
2
3

Select [%ID] from Table

有关MSSQL Server的列名和表名规则的详细信息,可以查看msdn

相关问题