복붙노트

[SQL] 어떻게 이름에 대괄호가 SQL 서버에 뭔가 이름을 바꾸려면?

SQL

어떻게 이름에 대괄호가 SQL 서버에 뭔가 이름을 바꾸려면?

나는 책 카테고리로 이름을 바꿀 주위에 대괄호가 내 테이블 중 하나, [도서 카테고리]의 열을 가지고있다.

나는 다음과 같은 쿼리를 시도했다 :

sp_rename을 'BookPublisher. [Book_Category]', 'Book_Category', '열'

하지만 난이 오류가 발생했습니다 :

캔 사람의 도움 나?

해결법

  1. ==============================

    1.당신은 당신이 그것을 만들 수와 동일한 방식으로 수행

    당신은 당신이 그것을 만들 수와 동일한 방식으로 수행

    exec sp_rename 'BookPublisher."[Book_Category]"', 'Book_Category', 'COLUMN';
    

    다음은이조차 할 수 있다면 나는 시험에 만든 작은 샘플입니다. 처음 엔에서 그냥 내가 잘못 회전에서, 가능, 그것은 [] SQL 서버에서 사용할 수있는 방법에 대한 오해 가정 - 당신은 브래킷의 외부에 큰 따옴표를 사용해야합니다.

    begin tran
    
    create table [Foo] ("[i]" int);
    
    exec sp_help 'Foo';
    
    exec sp_rename 'Foo."[i]"', 'i', 'column ';
    
    exec sp_help 'Foo';
    
    rollback tran
    
  2. ==============================

    2.이 나를 위해 작동합니다 :

    이 나를 위해 작동합니다 :

    exec sp_rename ‘[dbo].[TableName].[OldColumnName]’, ‘NewColumnName’
    
  3. ==============================

    3.큰 따옴표는 필요하지 않습니다. 당신은 단순히과 같이 대괄호를 닫는 두 배로 :

    큰 따옴표는 필요하지 않습니다. 당신은 단순히과 같이 대괄호를 닫는 두 배로 :

    EXEC sp_rename 'BookPublisher.[[Book_Category]]]', 'Book_Category', 'COLUMN';
    

    당신은 QUOTENAME 함수를 사용하여 자신이 밖으로 찾을 수 있습니다 :

    SELECT QuoteName('[Book_Category]');
    -- Result: [[Book_Category]]]
    

    이것은 부수적으로도 열을 만들기 위해 작동 :

    CREATE TABLE dbo.Book (
       [[Book_Category]]] int -- "[Book_Category]"
    );
    
  4. ==============================

    4.그 오류가있어, 왜 궁금 해서요. 당신이에서 변화하는 열 이름이 존재하지 않는 경우이 정확한 오류를 얻을 수 있습니다. 당신은 여전히 ​​오류가 발생하는 경우뿐만 아니라 이중으로 확인 할 수 있습니다.

    그 오류가있어, 왜 궁금 해서요. 당신이에서 변화하는 열 이름이 존재하지 않는 경우이 정확한 오류를 얻을 수 있습니다. 당신은 여전히 ​​오류가 발생하는 경우뿐만 아니라 이중으로 확인 할 수 있습니다.

  5. from https://stackoverflow.com/questions/21168929/how-to-rename-something-in-sql-server-that-has-square-brackets-in-the-name by cc-by-sa and MIT license