PostgreSQL LIKE 大小寫(xiě)實(shí)例
PostgreSQL 數(shù)據(jù)庫(kù)
函數(shù)upper(“字符串”):轉(zhuǎn)成大寫(xiě)字符串
WHERE UPPER("User_Name") LIKE upper(username) 此句查詢“User_Name” 中值大小寫(xiě)不區(qū)分。
SELECT "User_Id","User_Image","User_Name","User_Birthday","User_Sex","User_OnlineLat","User_OnlineLon","User_State",
(SELECT COUNT(*) FROM "tbUsers" WHERE UPPER("User_Name") LIKE upper(username)) AS "user_count"
FROM "tbUsers"
WHERE UPPER("User_Name") LIKE upper(username) LIMIT 10 OFFSET 0;
補(bǔ)充:PostgreSQL數(shù)據(jù)庫(kù)表名大小寫(xiě)問(wèn)題
今天,用Delphi 連接postgresql數(shù)據(jù)庫(kù)時(shí),出現(xiàn)了問(wèn)題。問(wèn)題提示:error:表不存在。Postgrsql數(shù)據(jù)庫(kù)的表名都用大寫(xiě),比如Users、Profiles、Money等。
多嘗試了一些表,發(fā)現(xiàn)當(dāng)表名都是小寫(xiě)時(shí),可以連接。
后來(lái)發(fā)現(xiàn),在做select * from Users這樣的查詢的時(shí)候也會(huì)提示ERROR: relation “users” does not exist。
分析了一下,由于 PostgreSQL 是大小寫(xiě)敏感的,并默認(rèn)對(duì)SQL語(yǔ)句中的數(shù)據(jù)庫(kù)對(duì)象名稱(chēng)轉(zhuǎn)換為小寫(xiě),因此如果你在創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象時(shí)指定了大小寫(xiě)混和的對(duì)象名稱(chēng),那么在通過(guò)SQL語(yǔ)句訪問(wèn) 這些對(duì)象時(shí),由于Postgresql數(shù)據(jù)庫(kù)里表名應(yīng)該是分大小寫(xiě)的,導(dǎo)致找不到users這個(gè)表。
要解決這個(gè)問(wèn)題,必須使用雙引號(hào)(”)將數(shù)據(jù)庫(kù)對(duì)象括起來(lái),以提示 PostgreSQL 不用幫你轉(zhuǎn)換對(duì)象名為小寫(xiě),否則將激發(fā)“xxxxx對(duì)象不存在”的異常,譬如您的數(shù)據(jù)庫(kù)中有名為 TUser 的表,您在 PostgreSQL 自帶的圖形化查詢工具中必須使用類(lèi)似這樣的查詢語(yǔ)句才能正確執(zhí)行:SELECT * FROM “TUser”,當(dāng)然它對(duì) SQL 標(biāo)準(zhǔn)中的保留字和關(guān)鍵字是不區(qū)分大小寫(xiě)的,所以寫(xiě)成 select * From “TUser” 這樣也是完全可以的。
另外,PostgreSQL 對(duì)數(shù)據(jù)也是大小寫(xiě)敏感的,這點(diǎn)與 SQLServer 不同(SQLServer 默認(rèn)是不敏感的),譬如在 TUser 表中有字段 Name,其中有一行 Name 字段值為“Tony Tang”的記錄,如果直接使用
SELECT * FROM “TUser” WHERE “Name” LIKE ‘%tony%';
是查詢不到這條記錄的,不過(guò)你可以這么寫(xiě):
SELECT * FROM “TUser” WHERE UPPER(“Name”) LIKE ‘%TONY%';
呵呵,是不是覺(jué)得這樣不太好看,而且擔(dān)心性能會(huì)受影響?幸好 PostgreSQL 提供了關(guān)鍵字 ILIKE 來(lái)幫我們解決這個(gè)問(wèn)題,這真是個(gè)非常有趣的關(guān)鍵字(I like),對(duì)于第一種寫(xiě)法只需要將 LIKE 替換成 ILIKE 就可以了。
最簡(jiǎn)單的辦法,就是數(shù)據(jù)庫(kù)里所有的表名都是小寫(xiě)的,最好字段名也都是小寫(xiě)的(因?yàn)橛成涞綄?duì)象屬性以后基本上會(huì)變換大小寫(xiě),JPA是都變成小寫(xiě))。這樣就沒(méi)與那么多煩惱以及兼容性問(wèn)題了。
小結(jié):
1、PostgreSQL對(duì)表名、字段名都是區(qū)分大小寫(xiě)的。用SQL語(yǔ)句的時(shí)候需要加雙引號(hào)。
2、PostgreSQL在SQL語(yǔ)句中對(duì)數(shù)據(jù)(字段)大小寫(xiě)是敏感的.
select login_ID as 編號(hào), name as 用戶名 from t_login(這種會(huì)報(bào)錯(cuò),找不到login_ID字段).
如果要查詢大寫(xiě)字母的字段,同樣要加上雙引號(hào):select “l(fā)ogin_ID” as 編號(hào), name as 用戶名 from t_login.
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
PostgreSQL查看正在執(zhí)行的任務(wù)并強(qiáng)制結(jié)束的操作方法
這篇文章主要介紹了PostgreSQL查看正在執(zhí)行的任務(wù)并強(qiáng)制結(jié)束的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
postgresql通過(guò)索引優(yōu)化查詢速度操作
這篇文章主要介紹了postgresql通過(guò)索引優(yōu)化查詢速度操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
PostgreSQL連接數(shù)過(guò)多報(bào)錯(cuò):too many clients already的解決
在使用 Navicat 連接 PostgreSQL 數(shù)據(jù)庫(kù)時(shí),突然遭遇到了一個(gè)報(bào)錯(cuò):“FATAL: sorry, too many clients already”,這一錯(cuò)誤提示表明數(shù)據(jù)庫(kù)連接數(shù)已經(jīng)達(dá)到上限,無(wú)法再創(chuàng)建新連接,所以本文給大家介紹了相關(guān)的解決辦法,需要的朋友可以參考下2024-03-03
PostgreSQL拼接字符串的幾種方法簡(jiǎn)單示例
在PostgreSQL中有多種方式可以拼接字符串,這篇文章主要給大家介紹了關(guān)于PostgreSQL拼接字符串的幾種方法,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
postgresql開(kāi)啟pg_log日志詳細(xì)步驟及參數(shù)說(shuō)明
pg_log日志要啟動(dòng)保存的話需要去設(shè)置一下相關(guān)的配置文件參數(shù)就好了,下面這篇文章主要給大家介紹了關(guān)于postgresql開(kāi)啟pg_log日志詳細(xì)步驟及參數(shù)說(shuō)明的相關(guān)資料,需要的朋友可以參考下2024-02-02
Postgre數(shù)據(jù)庫(kù)Insert 、Query性能優(yōu)化詳解
這篇文章主要介紹了Postgre數(shù)據(jù)庫(kù)Insert和Query性能優(yōu)化的步驟,大家可以參考使用2013-11-11
Postgresql 數(shù)據(jù)庫(kù)權(quán)限功能的使用總結(jié)
這篇文章主要介紹了Postgresql 數(shù)據(jù)庫(kù)權(quán)限功能的使用總結(jié),具有很好的參考價(jià)值,對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02

