【问题标题】:Add a column in SQL with a special character?在 SQL 中添加带有特殊字符的列?
【发布时间】:2020-07-13 15:36:09
【问题描述】:

我知道这是不好的做法,但目前的情况需要一个特殊字符(尖锐的 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】:

    您需要使用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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 2019-01-17
      相关资源
      最近更新 更多