Добавить столбец в SQL со специальным символом? - PullRequest
0 голосов
/ 01 апреля 2020

Я знаю, что это плохая практика, но текущая ситуация требует специального символа (sharp s = ß) в качестве имени столбца. Как я могу написать запрос SQL, который добавляет столбец со специальным символом? С SSMS он добавляет Straße, но когда я запускаю запрос SQL с sqlcmd.exe через внешнюю программу, он добавляет 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

1 Ответ

3 голосов
/ 01 апреля 2020

Вам нужно использовать 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;
...