好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 淺談PostgreSQL中大小寫不敏感問題

淺談PostgreSQL中大小寫不敏感問題

熱門標簽:漯河外呼電話系統 外呼調研系統 辦公外呼電話系統 重慶自動外呼系統定制 美容工作室地圖標注 合肥公司外呼系統運營商 地圖標注和圖片名稱的區別 海豐有多少商家沒有地圖標注 打電話智能電銷機器人授權

本文主要討論PostgreSQL中大小寫不敏感存在的問題。

默認情況下,PostgreSQL會將列名和表名全部轉換為小寫狀態。

圖1 Person與person

如圖1所示,我們創建表person,其中包含name列。然后插入一條記錄。執行SELECT查詢時,使用列名Name和表名Person而不是name和person,發現仍然可以正常獲取剛剛插入表person中的記錄。

圖2 創建表Person?

此時如果我們再想創建表Person,會得到一個錯誤,因為此時PostgreSQL實際上把表名從Person轉換成了person。由于已經存在表person,所以會報錯。

通常情況下,這種大小寫不敏感是很方便的,但是當我們想創建大小寫敏感的表名和列名(需要使用雙引號)時,會產生一些問題。

圖3 創建表Person

如圖3所示,我們成功創建了表Person,并插入了一條記錄,此條記錄和插入person中的不同以示區分。再次使用SELECT查詢,并且使用表名Person和列名Name,但是返回的結果卻是person中的記錄。這還是因為PostgreSQL將Person轉換成了person。所以想要正確查詢,需要使用“Person”和“Name”(如圖4所示)。

圖4 獲取表Person中的記錄

此時查看數據庫中的表(見圖5),可以發現Person和person這兩個表都在數據庫中。如果我們使用DROP TABLE Person,刪除的仍然是表person。

圖5 刪除操作

綜上所述,當創建表或者寫SQL查詢語句時,建議避免使用雙引號。

補充:PostgreSQL大小寫不敏感排序

pg12開始支持不區分大小寫,或者區分大小寫的排序的collate。

語法:

CREATE COLLATION [ IF NOT EXISTS ] name (
  [ LOCALE = locale, ]
  [ LC_COLLATE = lc_collate, ]
  [ LC_CTYPE = lc_ctype, ]
  [ PROVIDER = provider, ]
  [ DETERMINISTIC = boolean, ]
  [ VERSION = version ]
)
CREATE COLLATION [ IF NOT EXISTS ] name FROM existing_collation

其中兩個關鍵參數:

PROVIDER:指定用于與此排序規則相關的區域服務的提供程序。可能的值是: icu、libc。 默認 是libc。但若要設置大小寫不敏感,目前只支持icu。

DETERMINISTIC:設置成not deterministic表示大小寫不敏感。

例子:

—正常情況的排序

我們可以看到,正常的order by會區分大小寫。

bill@bill=>create table test (c1 text); 
CREATE TABLE
bill@bill=>insert into test values ('a'),('b'),('c'),('A'),('B'),('C'); 
INSERT 0 6
bill@bill=>select * from test order by c1;
 c1 
----
 A
 B
 C
 a
 b
 c
(6 rows)

同樣,在oracle中也是一樣:

SQL> select * from test order by c1;

C1
--------------------------------------------------------------------------------
A
B
C
a
b
c

6 rows selected.

—不區分大小寫排序

可以看到我們指定collate為zh_CN時便沒有區分大小寫排序。

bill@bill=>select * from test order by c1 collate "zh_CN"; 
 c1 
----
 a
 A
 b
 B
 c
 C
(6 rows)

我們也可以自定義collation支持不區分大小寫的排序,但是需要注意在編譯數據庫的時候加上 —with-icu才可以,否則會出現報錯:

bill@bill=>CREATE COLLATION case_insensitive (provider = icu, locale = 'zh_Hans', deterministic = false);
ERROR: ICU is not supported in this build
HINT: You need to rebuild PostgreSQL using --with-icu.

正常情況:

bill@bill=> CREATE COLLATION case_insensitive (provider = icu, locale = 'zh_Hans', deterministic = false); 
CREATE COLLATION 
bill@bill=> select * from test order by c1 collate "case_insensitive"; 
 c1  
---- 
 a 
 A 
 b 
 B 
 c 
 C 
(6 rows)

目前collate不支持=操作不區分大小寫,目前需要citext插件。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • PostgreSQL LIKE 大小寫實例
  • Postgresql 數據庫轉義字符操作
  • postgresql~*符號的含義及用法說明
  • postgresql數據庫使用說明_實現時間范圍查詢
  • postgresql 實現將數組變為行
  • 基于PostgreSql 別名區分大小寫的問題

標簽:來賓 株洲 錦州 晉城 烏海 衡陽 珠海 蚌埠

巨人網絡通訊聲明:本文標題《淺談PostgreSQL中大小寫不敏感問題》,本文關鍵詞  淺談,PostgreSQL,中,大小寫,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談PostgreSQL中大小寫不敏感問題》相關的同類信息!
  • 本頁收集關于淺談PostgreSQL中大小寫不敏感問題的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 精品无码一区二区三区电影桃花| 色01视频| 乱人xxx国语对白91| 特黄一级大片| 精品国产电影在线看免费观看| 日本乱熟BBBBBBBBB| 高清国产一级毛片在线| 韩国三级日本三级少妇| 思思久久99热| 国产一成人精品福利网站| 午夜国产一区二区| 性中国妇女熟女XXXX毛多| 国产欲妇?????| 忘忧草网址| 强行挺进她体内糟蹋| 韩国三级《两个女人》| 成年人视频网站免费| 小受被攻吸乳喷出奶水| 疯狂蹂躏禁脔欢爱h| 操操操网站| 欧美尺码日本尺码专线| 男女啪啪猛烈无遮挡猛进猛出| 99成人??国产精品视频 | 欧美日韩中文国产一区二区三区| 色777狠狠综合秋免鲁丝| 亚洲va欧美va国产综合久久| 《好好疼爱里面》动漫| 试看120秒小视频动态图动漫| gogo人体大胆大尺度高清| 一女被多男玩很肉很黄文| 久久人人爽人人爽大片aw| 九色丨91丨窝蚪人妻| 97人人在线| 隔壁的女孩5| 強姦丝袜人妻OL影视91| 熟女人妻?人妻の视频| 国产人妻精品一区二区三水牛影视 | 欧美精品亚洲| 97人人爽人人做人人人片AV| 日本黄色动作片| 国产360水滴情侣酒店系列 |