psotgresql之大小寫

2021-09-08 05:31:10 字數 2846 閱讀 6736

框中內容來自《postgresql資料庫物件名大小寫敏感》

**:由於postgresql 是大小寫敏感的,並預設對sql語句中的資料庫物件名稱轉換為小寫,

因此如果你在建立資料庫物件時指定了大小寫混和的物件名稱,那麼在通過sql語句訪問這些物件時,必須使用雙引號(")將資料庫物件括起來,以提示 postgresql  不用幫你轉換物件名為小寫,否則將激發「***xx物件不

存在」的異常,譬如您的資料庫中有名為 tuser 的表,您在 postgresql 自帶的圖形化查詢工具中必須使用類似這樣的查詢語句才能正確執行:select * from "tuser",當然它對 sql 標準中的保留字和關鍵字是不區分大小寫的,所以寫成 select * from "tuser" 這樣也是完全可以的。

另外,postgresql對資料也是大小寫敏感的,這點與 sqlserver 不同(sqlserver預設是不敏感的),譬如在 tuser 表中有字段 name,其中有一行 name 字段值為「tony tang」的記錄,如果直接使用

select* from "tuser" where "name" like '%tony%';

是查詢不到這條記錄的,不過你可以這麼寫:

select* from "tuser" where upper("name") like '%tony%';

呵呵,是不是覺得這樣不太好看,而且擔心效能會受影響?幸好 postgresql 提供了關鍵字ilike來幫我們解決這個問題,這真是個非常有趣的關鍵字(ilike),對於第一種寫法只需要將 like 替換成ilike 就可以了。

最後,建議在編寫 sql指令碼的時候,使用單引號做字串常量的標識,雖然在 ms sqlserver 中雙引號和單引號均可作為字串常量的識別符號,但是在 postgresql 中對此就有嚴格的功能區分(不能用雙引號作為字串常量的識別符號),為了保險起見,建議對所有的資料庫物件名均使用雙引號(")將其顯式約定,以保證大小寫的嚴格匹配。

一.物件名:如表名,欄位名

資料庫核心是區分大小寫的。

只是為了方便使用,資料庫在分析sql指令碼時,對不加雙引號的所有物件名轉化為小寫字母。

除非你在物件名加上雙引號。

所以1。從建表到應用,要麼都加雙引號,要麼都不要加。

2。如果以上這點做不到,所有的物件名給我寫小寫字母。

二.資料

區分大小寫

假如like '%a%',別指望a會出來

框中內容來自《省略postgresql的sql語句中的雙引號》

內容來自:

標準的sql是不區分大小寫的。但是postgresql對於資料庫中物件的名字允許使用支援大小寫區分的定義和引用方法。方式就是在ddl中用雙引號把希望支援大小的物件名括起來。比如希望建立乙個叫aaa的表。如果用create table aaa (...);的話,建立出來的表實際上是aaa。如果希望建立大寫的aaa表的話,就需要用create table "aaa"(...);這種雙引號的方式定義物件名。這樣寫的缺點是查詢語句必須也使用雙引號的方式引用物件名。比如select* from "aaa";否則postgresql缺省會去找aaa這個物件,然後返回aaa不存在的錯誤。需要注意的是不僅僅是表可以這樣定義和引用,對postgresql中的任意物件(比如列名,索引名等)都有效。

實際上傳統的sql都是不區分大小寫的,所以只要ddl和dll按照傳統(不使用雙引號)的方式運算元據庫物件不會有任何問題。問題出在如果表是通過postgresql的pgadmin iii 工具建立的話,預設是按照有雙引號的方式建立物件的,所以dll裡面必須也要按照有雙引號的方式使用。但是這種寫法不是標準的,如果是通過一些通用庫函式訪問資料庫的話,會不被支援。

建議:1.不推薦使用pgadmin iii這個工具建立資料庫物件。還是應該手工編寫ddl語句。

2.不推薦在ddl裡用雙引號的方式建立區分大小寫的物件。

3.postgresql給出的建議是sql的key word用大寫,其他的名稱全部使用小寫。

個人操作時遇到的問題:

用sql shell(psql)通過使用者postgres登入postgresql,建立使用者administrator,

postgres=#create user administrator

結果如下圖所示:

可以知道:

由於postgresql 是大小寫敏感的,並預設對sql語句中的資料庫物件名稱轉換為小寫。

所以如果你在建立資料庫物件時指定了大小寫混和的物件名稱,那麼在通過sql語句訪問這些物件時,必須使用雙引號(")將資料庫物件括起來,以提示 postgresql 不用幫你轉換物件名為小寫。

加雙引號(「)後就可以建立使用者administrator,若不加則建立的使用者為administrator。

將postgresql資料夾bin路徑新增到系統環境中後重啟生效.

通過windows下dos建立postgresql使用者是區分大小寫的。

在dos下操作,通過createuser –uolduser –p newuser來建立。

比如我們想建立postgresql資料庫使用者administrator。

>createuser –u postgre –p administrator

這樣建立的資料庫使用者administrator沒有建立資料庫的權利,可以通過pgadmin iii登入進行檢視。

若使其可以建立資料庫可以參照下面內容進行設定:

>createuser –u postgre –s administrator

這樣具有建立資料庫能力。

sed之大小寫轉換

1 this is a dog 請把每個單詞的第乙個字母替換成大寫。sed s b a z u g 解析 b大家應該知道是錨定的意思,說白了就是邊界符,那麼這就只會匹配第乙個開頭的字母,然後 u的意思在元字元裡的解釋是 大寫 不是標題首字元 e 以前的字元 而 u只是將下乙個字元變為大寫,注意它們的...

Python之大小寫轉換

s abc abc s 0 upper abc s 1 lower abc 假設使用者輸入的英文名字不規範,沒有按照首字母大寫,後續字母小寫的規則,請利用map 函式,把乙個list 包含若干不規範的英文名字 變成乙個包含規範英文名字的list 輸入 adam lisa bart 輸出 adam l...

python 字串內建函式之大小寫

假設有乙個字串s hello,world 如何對字串進行大小寫的更改?1,將字串的首字母改為大寫 msg s.capitalize print msg 列印結果為 hello,world 字串的內建函式capitalize 用於將字串的首字母大寫,並返回乙個新的字串 2,將字串的每個單詞首字母改為大...