中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PostgreSQL 與大小寫的坑是什么

發布時間:2022-01-04 09:57:50 來源:億速云 閱讀:176 作者:柒染 欄目:大數據

這期內容當中小編將會給大家帶來有關PostgreSQL 與大小寫的坑是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

其實每種數據庫都有自己的特色,PostgreSQL 也不例外,其中如果你留心PostgreSQL被最常問及的問題之一,就是大小寫的問題。今天的討論不涉及數據庫名,表名的大小寫,僅僅討論一下字段里面的值的大小寫。

我們以一個例子為開始,

1 我們創建一個表

create table Case_insensitive

( id serial not null primary key, 

address varchar(50), 

comment text);

2 將數據庫輸入到里面

insert into case_insensitive (address,comment) values ('Person1@em.com','Thanks for your help!!');

insert into case_insensitive (address,comment) values ('TaTk@bb.com','I hate it');

insert into case_insensitive (address,comment) values ('ttKbb@cc.com','Sorry I am understanding now, little slowly');

PostgreSQL 與大小寫的坑是什么

那么大小寫的問題在哪里?我們來查詢一個數據大致你就會理解

PostgreSQL 與大小寫的坑是什么

從圖中你可以清晰的看到,發生的問題在哪里,如果你的字段里面的值是包含英文大小寫的情況下,你必須是要進行細致一致的大小寫匹配才能找到相關的值。

而按照中國的人的思維方式,或者說用慣了其他主流數據庫的情況下這樣的必須匹配性的輸入對中國人來說,是不友好的。

雖然題目中提到了"坑", 但實際上來說,這不是一個坑,或者嚴謹的來說,PostgreSQL這樣的方式才應該是正確的。而很多時候先入為主,來判斷POSTGRESQL 在這方面是有坑的,這并不公平。

那如何來解決這個世俗認為postgresql 應該和其他數據庫一樣使用習慣的方式問題。下面就要來說一說。

方法:1

統一規則:

我們將我們查詢的字段,和需要查詢的數據統一變成小寫,通過 lower 這個函數來進行統一的轉換。

PostgreSQL 與大小寫的坑是什么

從上圖可以看出,我們可以將數據在輸入純小寫的情況下,將數據查出。

問題又來了,這樣的情況下能走索引嗎?

PostgreSQL 與大小寫的坑是什么

答案是當然不能,函數的計算在條件左邊的情況下大部分數據庫都是不能走索引的,oracle 當然有類似的功能,能讓一部分這樣的情況走索引。PG 可以嗎,當然,對標的就是ORACLE ,當然也可以當函數計算在左邊的情況下,繼續走索引。

怎么做???

變換思路,我們將索引的里面的字符都變小就可以了,看下圖。

當然后面執行計劃還未走索引得原因是數據量只有三條,不足以支撐走索引的cost.

PostgreSQL 與大小寫的坑是什么

那處理這樣情況的方法到此為止了?  no no no  我們還有其他的方法供您選擇。

2  有一種情況是,這一列例如是郵件地址,如果是郵件地址的情況下,是具有一種性質的,就是數據的唯一性。那如果 (請看圖)

PostgreSQL 與大小寫的坑是什么

如果出現圖中的情況,這可是不大美好的一件事情。如何來進行郵件地址的唯一性檢查。我們可以提前為這列,建立一個唯一索引。

PostgreSQL 與大小寫的坑是什么

有了這樣的索引大小寫不一致的情況輸入同樣的字符就可以被管制了

PostgreSQL 與大小寫的坑是什么

當然如果這些你還有疑問,看看是不是還有其他的方法來對這樣的事情進行處理。回答是YES

3  使用ilike

PostgreSQL 與大小寫的坑是什么

通過使用ilike的查詢方式來查詢大小寫敏感的問題。

其實如果有規劃的情況下,可以通過在輸入時候的大小寫輸入的轉換在insert 這個階段就將問題處理清楚,并且輔助于一些約束。這樣問題就比較好解決。

上述就是小編為大家分享的PostgreSQL 與大小寫的坑是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汕尾市| 抚顺县| 库伦旗| 阳原县| 竹北市| 阳城县| 寿宁县| 平和县| 武冈市| 东阳市| 淮南市| 宿迁市| 德州市| 桦甸市| 贵南县| 垦利县| 中宁县| 大宁县| 汕尾市| 青海省| 诏安县| 隆昌县| 永和县| 乌兰浩特市| 普安县| 固原市| 桑日县| 三原县| 玉龙| 石嘴山市| 通化市| 宿迁市| 塔河县| 娄烦县| 疏附县| 当雄县| 罗平县| 吉首市| 祁门县| 维西| 井研县|