欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PostgreSQL 中的單引號(hào)與雙引號(hào)用法說(shuō)明

 更新時(shí)間:2021年02月01日 09:22:50   作者:漿糊串磕楠  
這篇文章主要介紹了PostgreSQL 中的單引號(hào)與雙引號(hào)用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

在pg中的sql,單引號(hào)用來(lái)標(biāo)識(shí)實(shí)際的值,雙引號(hào)用來(lái)標(biāo)識(shí)表名(table name)或列名(column name)等數(shù)據(jù)庫(kù)中存在的值。

如,執(zhí)行一句query:

select "name" from "students" where "id"='1' 

加上引號(hào)的好處在于,當(dāng)在程序中進(jìn)行sql拼裝的時(shí)候,可以簡(jiǎn)化對(duì)值的校驗(yàn),同時(shí)又可以避免sql注入。即在數(shù)據(jù)庫(kù)層面完成了事故的避免。

如,同樣執(zhí)行的query:

select ";drop table students;" from "students" where "id"='1' 

由于被引號(hào)框起來(lái),pg只會(huì)認(rèn)為“;”也是列名的一部分,而不會(huì)將語(yǔ)句切斷,從而順利避免了事故。

補(bǔ)充:PostgreSQL 和 MySQL 關(guān)于單引號(hào)、雙引號(hào)、反單引號(hào)的區(qū)別

解決方案寫(xiě)在前面:

MySQL 可以使用單引號(hào)(')或者雙引號(hào)(")表示值,但是 PG 只能用單引號(hào)(')表示值,PG 的雙引號(hào)(")是表示系統(tǒng)標(biāo)識(shí)符的,比如表名或者字段名。MySQL可以使用反單引號(hào)(`)表示系統(tǒng)標(biāo)識(shí)符,比如表名、字段名,PG 也是不支持的。

事情的起因是同事發(fā)現(xiàn)好像反單引號(hào)(`)不能在 PG 中使用。在 MySQL 和 Spark SQL 中,我覺(jué)得用反單引號(hào)是一個(gè)優(yōu)秀的習(xí)慣,所以我以為反單引號(hào)標(biāo)識(shí)表名或者字段名應(yīng)該是標(biāo)準(zhǔn)(好吧,所有的“以為”都是錯(cuò)的);確實(shí)感覺(jué)三觀被顛覆。

然后就是去查了一下,下面貼出官網(wǎng)關(guān)于從 MySQL 遷移 PostgreSQL 的 wiki 的答案,大家如果有遷移上的問(wèn)題(哪怕是思維上的遷移),都可以看這個(gè)鏈接。

MySQL uses ' or " to quote values (i.e. WHERE name = “John”). This is not the ANSI standard for databases. PostgreSQL uses only single quotes for this (i.e. WHERE name = ‘John'). Double quotes are used to quote system identifiers; field names, table names, etc. (i.e. WHERE “l(fā)ast name” = ‘Smith').

MySQL uses ` (accent mark or backtick) to quote system identifiers, which is decidedly non-standard.

翻譯過(guò)來(lái)就是寫(xiě)在前面的解決方案。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • PostgreSQL備份工具 pgBackRest使用詳解

    PostgreSQL備份工具 pgBackRest使用詳解

    這篇文章主要介紹了PostgreSQL備份工具 pgBackRest使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • PostgreSQL中offset...limit分頁(yè)優(yōu)化的一些常見(jiàn)手段

    PostgreSQL中offset...limit分頁(yè)優(yōu)化的一些常見(jiàn)手段

    我們?cè)谑褂脭?shù)據(jù)庫(kù)進(jìn)行分頁(yè)查詢時(shí),隨著offset過(guò)濾的數(shù)據(jù)越來(lái)越多,查詢也會(huì)越來(lái)越慢,下面這篇文章主要給大家介紹了關(guān)于PostgreSQL中offset...limit分頁(yè)優(yōu)化的一些常見(jiàn)手段,需要的朋友可以參考下
    2023-05-05
  • postgresql 12版本搭建及主備部署操作

    postgresql 12版本搭建及主備部署操作

    這篇文章主要介紹了postgresql 12版本搭建及主備部署操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • PostgreSQL時(shí)間線(timeline)和History File的用法

    PostgreSQL時(shí)間線(timeline)和History File的用法

    這篇文章主要介紹了PostgreSQL時(shí)間線(timeline)和History File的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 詳解PostgreSQL?14.4安裝使用及一些安裝的異常問(wèn)題

    詳解PostgreSQL?14.4安裝使用及一些安裝的異常問(wèn)題

    這篇文章主要介紹了PostgreSQL?14.4的安裝以及使用以及一些安裝的異常,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • PostgreSQL ROW_NUMBER() OVER()的用法說(shuō)明

    PostgreSQL ROW_NUMBER() OVER()的用法說(shuō)明

    這篇文章主要介紹了PostgreSQL ROW_NUMBER() OVER()的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • PostgreSQL HOT與PHOT有哪些區(qū)別

    PostgreSQL HOT與PHOT有哪些區(qū)別

    這篇文章主要介紹了PostgreSQL8.3版本開(kāi)始就引入的HOT機(jī)制與PHOT使用區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • Postgres copy命令導(dǎo)入導(dǎo)出數(shù)據(jù)的操作方法

    Postgres copy命令導(dǎo)入導(dǎo)出數(shù)據(jù)的操作方法

    最近有需要對(duì)數(shù)據(jù)進(jìn)行遷移的需求,由于postgres性能的關(guān)系,單表3000W的數(shù)據(jù)量查詢起來(lái)有一些慢,需要對(duì)大表進(jìn)行切割,拆成若干個(gè)子表,涉及到原有數(shù)據(jù)要遷移到子表的需求,這篇文章主要介紹了Postgres copy命令導(dǎo)入導(dǎo)出數(shù)據(jù)的操作方法,需要的朋友可以參考下
    2024-08-08
  • postgresql 切換 log、xlog日志的實(shí)現(xiàn)

    postgresql 切換 log、xlog日志的實(shí)現(xiàn)

    這篇文章主要介紹了postgresql 切換 log、xlog日志的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • PostgreSQL 存儲(chǔ)過(guò)程的進(jìn)階講解(含游標(biāo)、錯(cuò)誤處理、自定義函數(shù)、事務(wù))

    PostgreSQL 存儲(chǔ)過(guò)程的進(jìn)階講解(含游標(biāo)、錯(cuò)誤處理、自定義函數(shù)、事務(wù))

    PL/pgSQL 游標(biāo)允許我們封裝一個(gè)查詢,然后每次處理結(jié)果集中的一條記錄,這篇文章主要介紹了PostgreSQL 存儲(chǔ)過(guò)程的進(jìn)階介紹(含游標(biāo)、錯(cuò)誤處理、自定義函數(shù)、事務(wù)),需要的朋友可以參考下
    2023-03-03

最新評(píng)論