日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

psql中character varying和character区别

發布時間:2023/12/16 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 psql中character varying和character区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
類型說明
character varying(n), varchar(n)變長,有長度限制
character(n), char(n)定長,不足補空白
text變長,無長度限制

? ? SQL定義了兩種基本的字符類型:character varying(n)和character(n),這里的n是一個正整數。兩種類型都可以存儲最多n個字符的字符串。試圖存儲更長的字符串到這些類型的字段里會產生一個錯誤,除非超出長度的字符都是空白,這種情況下該字符串將被截斷為最大長度。這個看上去有點怪異的例外是SQL標準要求的。如果要存儲的字符串比聲明的長度短,類型為character的數值將會用空白填滿;而類型為character varying的數值將只是存儲短些的字符串。

? ? 如果我們明確地把一個數值轉換成character varying(n)或character(n),那么超長的數值將被截斷成n個字符,且不會拋出錯誤。這也是SQL標準的要求。

? ? varchar(n)和char(n)分別是character varying(n)和character(n)的別名,沒有聲明長度的character等于character(1);如果不帶長度說明詞使用character varying,那么該類型接受任何長度的字符串。后者是PostgreSQL的擴展。

? ? 另外,PostgreSQL提供text類型,它可以存儲任何長度的字符串。盡管類型text不是SQL標準,但是許多其它SQL數據庫系統也有它。

? ? character類型的數值物理上都用空白填充到指定的長度n并且以這種方式存儲和顯示。不過,填充的空白在是無語意的。在比較兩個character值的時候,填充的空白都不會被關注,在轉換成其它字符串類型的時候,character值里面的空白會被刪除。請注意,在character varying和text數值里,結尾的空白是有語意的。

? ? 這些類型的存儲需求是4字節加上實際的字符串,如果是character的話再加上填充的字節。長的字符串將會自動被系統壓縮,因此在磁盤上的物理需求可能會更少些。長的數值也會存儲在后臺表里面,這樣它們就不會干擾對短字段值的快速訪問。不管怎樣,允許存儲的最長字符串大概是1GB。允許在數據類型聲明中出現的n的最大值比這還小。修改這個行為沒有什么意義,因為在多字節編碼下字符和字節的數目可能差別很大。如果你想存儲沒有特定上限的長字符串,那么使用text或沒有長度聲明詞的character varying,而不要選擇一個任意長度限制。

? ? 這三種類型之間沒有性能差別,只不過是在使用character的時候增加了存儲尺寸。雖然在某些其它的數據庫系統里,character(n)有一定的性能優勢,但在PostgreSQL里沒有。在大多數情況下,應該使用text或character varying。

總結

以上是生活随笔為你收集整理的psql中character varying和character区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。