如何在sql中添加具有特殊字符的列?

问题描述 投票:0回答:1

我知道这是不好的做法,但是当前情况需要使用特殊字符(sharp 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
sql-server special-characters alter-table not-exists
1个回答
1
投票

您需要使用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;
© www.soinside.com 2019 - 2024. All rights reserved.