在 SQL 中添加一个具有特殊字符的列?

Add a column in SQL with a special character?

我知道这是不好的做法,但目前的情况需要一个特殊字符(升号 s = ß)作为列名。如何编写 SQL 查询来添加具有特殊字符的列?使用 SSMS 它会添加 Straße 但是当我 运行 通过外部程序使用 sqlcmd.exe 查询 SQL 时它会添加 Straße.

这是脚本:

DECLARE @Street varchar(50)='Straße';  
IF NOT EXISTS(SELECT 1 FROM sys.columns 
          WHERE Name = N'@Street'
          AND Object_ID = Object_ID(N'Document'))
BEGIN
    EXECUTE
        (
        'ALTER TABLE dbo.Document ADD ' +
           @Street + ' varchar(50) NULL 
        ')
END

您需要使用 nvarchar 而不是 varchar:

DECLARE @Street sysname = N'Straße'; --synonym for nvarchar(128) NOT NULL
IF NOT EXISTS(SELECT 1 FROM sys.columns 
              WHERE Name = @Street --This shouldn't be a literal string
                AND Object_ID = Object_ID(N'Document'))
BEGIN
    DECLARE @SQL nvarchar(MAX);

    SET @SQL - N'ALTER TABLE dbo.Document ADD ' QUOTENAME@(Street) + N' varchar(50) NULL;'; 
    --Should the column be an nvarchar too, considering it's name?

    EXEC sys.sp_executesql @SQL;

END;