簡體   English   中英

刪除列名中帶引號的列

[英]Dropping column with quotation marks in column name

我使用以下命令添加了一個列(我使用了引號,以便 N 在我的列名中大寫)

ALTER TABLE new_table
  ADD “Name” VARCHAR(50);

但是,在運行該命令后,我現在在表中看到了“nam”列。

我怎樣才能刪除那列?

ALTER TABLE new_table
  DROP COLUMN "Name";

我收到以下錯誤:

錯誤:關系“new_table”的列“name”不存在

以下語句會導致此錯誤:

ALTER TABLE new_table
DROP COLUMN "Name";

似乎您沒有在第一個查詢總線中使用雙引號"其他一些引號嘗試使用相同的字符“”

ALTER TABLE new_table DROP COLUMN “Name”;

當您在列名中使用雙引號時,檢查 Postgres 如何存儲列名:

select table_name, column_name from information_schema.columns where 
table_name='tab1';

此外,當您執行 select 語句時,您可能會看到相同的內容:

select * from table;

在您的alter 語句中復制相同的列名文本。 這是 PostgreSQL 中帶有兩種雙引號的示例列名:

create table tab1(data varchar(30));

alter table tab1 ADD “Name1” varchar(50);
alter table tab1 ADD "Name2" varchar(50);

select *from tab1;
select table_name, column_name from information_schema.columns where table_name='tab1';

alter table tab1 drop column “Name1”;
alter table tab1 drop column "Name2";


table_name  column_name
tab1        data
tab1        “name1”
tab1        Name2

這是小提琴的鏈接

注意:避免在表名、列等中使用雙引號。如果使用,您必須確保在所有查詢中指定相同的名稱。

編輯:

這很簡單。 如果在列名稱中使用"Name" (與“Name” ,注意引號角度),則必須將該列稱為"Name" 如果使用“Name” ,則必須通過“Name”來引用。 引號需要匹配。

另一個觀察結果是,當"Name"用作列名時,它使列名作為Name (N 大寫),而不是數據庫中默認的所有小寫列名,但需要被稱為"Name"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM