1. 程式人生 > 其它 >postgres表名,欄位名 大小寫的區別

postgres表名,欄位名 大小寫的區別

技術標籤:部落格mysql

https://blog.csdn.net/zhanghui3239619/article/details/103195600

https://www.cnblogs.com/ficow/p/6612484.html

https://www.jianshu.com/p/25f7e7c653d0

https://www.cnblogs.com/gaofan/p/11398753.html

https://www.cnblogs.com/browsepearls/p/11445019.html

https://www.cnblogs.com/browsepearls/p/11445019.html

PostgreSQL之大小寫

1. PostgreSQL的資料庫核心對大小寫敏感。資料庫名,資料表名,列名區分大小寫。

2. 在PostgreSQL中,執行SQL語句時,會把所有表示關鍵字,庫名,表名,列名的字串轉換成小寫。所以又說PostgreSQL不區分大小寫的。

3. 在書寫SQL時,為了便於理解,預設:關鍵字大寫,表名首字母大寫,列名全部小寫。

示例:

CREATE DATABASE Contact; /*存在一個名字叫contact的資料庫,不存在Contact資料庫*/

CREATE DATABASE contact; /*報錯,資料庫contact已經存在*/

CREATE DATABASE "Contact" /*ok,加雙引號告訴PostgreSQL,不要轉換成小寫*/

總結:

一.物件名:如庫名,表名,欄位名
資料庫核心是區分大小寫的。
只是為了方便使用,資料庫在分析SQL指令碼時,對不加雙引號的所有物件名轉化為小寫字母。
除非你在物件名加上雙引號。
所以
1。從建表到應用,要麼都加雙引號,要麼都不要加。
2。如果以上這點做不到,所有的物件名給我寫小寫字母。
3. 字串要用單引號括起來,雙引號用來明確告訴資料庫不要轉換成小寫,本次要區分大小寫。
二.資料
區分大小寫
假如LIKE '%a%' ,別指望A會出來

所以這裡就可以得出以下結論:

當你要建立的表的表名是需要大寫的,那你就用雙引號""括起來;

以後只要是和這個表有關的操作,都要用""把表名給括起來,注意是英文狀態的雙引號!

https://blog.csdn.net/zhanghui3239619/article/details/103195600

postgres查詢自動將大寫的名稱轉換為小寫

pigs20182019-11-22 10:01:311642收藏

分類專欄:資料庫

版權


  1. SELECT sum(aa) as "recordNumber" FROM table

  2. SELECT sum(aa) as recordNumber FROM table

postgis查詢欄位是將欄位欄位轉為小寫,如果需要大寫的字元,需要加雙引號

https://www.jianshu.com/p/25f7e7c653d0

postgresql大小寫的問題

厚土火煙關注

2017.09.09 18:22:08字數 288閱讀 5,190

使用 postgresql ,如果欄位名有大寫,結果就會很糟糕。資料庫 SQL 不識別大寫,全部被識別成小寫了。
但是,很奇葩,在給欄位起名的時候,大小寫是區分的。
比如,你可以在同一張表裡分別設定兩個欄位為 userName 和 username,postgresql 是認可的。但是,寫 SQL 的時候就有問題了。它會一直反饋說
錯誤: 欄位 "username" 被指定多次
更糟糕的是,如果你把小寫的 username 刪除,userName它還是不識別。它會反饋說 "username" 欄位不存在
也就是說,你雖然在欄位中成功寫入了大寫字母,但是 postgresql 永遠都不認識它們。
欄位是這樣,表名也是這樣。
我想說 SAD.
不僅如此,使用 postgresql 還要注意不能使用它的關鍵字做為表名什麼的。比如 user 就是不行的。


其實,postgresql 對大寫還是支援的,只是,你需要在這些大寫的欄位上加上雙引號

insert into cofox (username, userinfo, "userName") values (4, 5, 6)
insert into cofox (username, userinfo, "userName") values ('吃','飯','啦')

3人點贊

隨筆

https://www.cnblogs.com/gaofan/p/11398753.html

PostgreSQL大小寫的坑

前景:之前聽前輩們說過postgresql大小寫敏感,覺得自己注意應該也不是啥事。今天用postgresql寫儲存過程,以前的命名習慣,喜歡全大寫,然後呼叫的儲存過程名寫的大寫也提示找不到,然後開始試驗了下表名、欄位、函式等名大寫或駝峰命名,發現postgresql的大小寫規則可以用“混亂”形容。當然“混亂”不是指postgresql沒定義清楚,是指我這程式設計師的思維理解起來不那麼舒服。

Part1:試驗了各種大小寫以及呼叫後的現象

1)建立了大寫的表NODE,查詢不論是用NODE還是node都不行,需用"NODE"才可識別。

  正確語句:

SELECT * from  "NODE" ;

2)建立了小寫的表edge,查詢不論是用EDGE還是edge都可以(額,說好的大小寫敏感呢),"edge"也可識別。

正確語句:

SELECT * from edge ;或 EDGE 或"edge"

3)儲存過程測試結論與表名一樣。

大寫的儲存過程TP_INSERT需用call "TP_INSERT"();來呼叫。

小寫的儲存過程tp_select,可用calltp_select(); 或 call TP_SELECT();或call "tp_select"(); 來呼叫

4)在NODE表中建立字元型name,Name,NAME三個欄位(居然能建成功),對應插入值'lili','Lili','LILI'。

 INSERT INTO public."NODE"(name, "Name", "NAME")  VALUES ('lili','Lili', 'LILI');   //插入成功

 SELECT  name,"Name","NAME" from "NODE"; //查詢正確返回值

小寫表的測試結果與上述結果相同。

Part2:結論

1)PostgreSQL對建立的物件(儲存過程、函式、表、欄位、序列等)名稱的大小寫敏感;

2)SQL語句中大小寫不敏感,大寫和小寫的sql語句意義一致,所有大寫的均轉換為小寫來解釋,如select * from NODE和select * from node是完全一致的;

3)如要查詢或呼叫大寫的PostgreSQL物件,需在對應的名稱上加雙引號,如"NODE";

4)最後的建議就是PostgreSQL中能用小寫的就小寫,畢竟"NODE"這種加雙引號的寫法總感覺怪怪的。

作者:GoodGF

出處:https://www.cnblogs.com/gaofan/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。

分類:Postgres

標籤:postgres,大小寫