<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 22.1\. 區域支持 _區域_支持指的是應用中考慮字母、排序、數值格式化等與文化相關的問題。 PostgreSQL使用服務器操作系統提供的標準ISO C 和POSIX區域機制。 更多的信息請參考你的系統文檔。 ## 22.1.1\. 概述 區域支持是在使用`initdb`創建一個數據庫集群的時候自動初始化的。 缺省時,`initdb`將會按照它的執行環境的區域設置初始化數據庫集群; 因此如果你的系統已經設置為你的數據庫集群想要的區域,那么你就沒有什么可干的了。 如果你想使用其它的區域(或者你還不知道你的系統設置的區域是什么), 那么你可以用`--locale`命令行選項告訴`initdb`你需要的區域究竟是哪個。 比如: ``` initdb --locale=sv_SE ``` Unix系統下的這個例子就把區域設置為說瑞典語(`sv`),并且在瑞典地區(`SE`)。 其它的可能性是`en_US`(美國英語)和`fr_CA`(加拿大法語)等等。 如果有多于一種的字符集可以用于同一個區域,那么聲明看起來會像`_language_territory.codeset_`。 比如,`fr_BE.UTF-8`表示為在比利時(BE)地區使用的法語(fr),并且使用UTF-8字符集編碼。 你的系統里有哪些可用的區域設置,它們的名字是什么, 這些信息都取決于你的操作系統提供商提供了什么以及你安裝了什么東西。 在大多數系統上,命令`locale -a`將提供所有可用區域的一個列表。 Windows使用更詳細的區域名稱,比如`German_Germany`或者`Swedish_Sweden.1252`, 但是原則是一樣的。 有時候,把幾種區域規則混合起來也很有用,比如, 使用英語排序規則而用西班牙語消息。為了支持這些, 我們有一套區域子范疇用于控制區域規則的某一方面: | `LC_COLLATE` | 字符串排序順序 | |:--- |:--- | | `LC_CTYPE` | 字符分類(什么是字母?是否區分大小寫?) | | `LC_MESSAGES` | 消息的語言 | | `LC_MONETARY` | 貨幣金額的格式 | | `LC_NUMERIC` | 數值格式 | | `LC_TIME` | 日期和時間格式 | 這些范疇名轉換成`initdb`選項的名字以覆蓋某個特定范疇的區域選擇。 比如,要把區域設置為加拿大法語,但使用美國的貨幣格式化規則, 可以使用`initdb --locale=fr_CA --lc-monetary=en_US`。 如果你想要你的系統表現得像沒有區域支持一樣,那么使用特殊的區域`C`或`POSIX`。 一些區域范疇的值必須在創建數據庫時固定下來。 您可以對不同的數據庫使用不同的設置,但一旦創建一個數據庫,你就再也不能更改它們了。 `LC_COLLATE`和`LC_CTYPE`就是這樣的范疇。 它們影響索引的排序順序,因此它們必需保持固定,否則在文本字段上的索引將會崩潰。 (但是你可以使用排序規則(collation)緩解這種限制,正如[Section 22.2](#calibre_link-667)中討論的)。 當運行`initdb`時確定這些范疇的缺省值, 這些值被用于創建新的數據庫,除非在`CREATE DATABASE`命令中明確指定。 其它區域范疇可以在服務器啟動的時候根據需要設置 服務器配置參數來改變(參閱[Section 18.11.2](#calibre_link-1427)獲取細節)。 `initdb`選擇的值實際上只是作為服務器啟動時的缺省值寫入 `postgresql.conf`配置文件。 如果你在`postgresql.conf`里面刪除了這些設置, 那么服務器將會繼承來自運行環境的設置。 請注意服務器的區域行為是由它看到的環境變量決定的, 而不受客戶端的環境影響。 因此,我們要在啟動服務器之前認真地設置好這些變量。 這樣帶來的一種情況是如果客戶端和服務器設置成不同的區域, 那么消息可能以不同的語言呈現,這取決于消息的來源。 > **Note:** 在我們談到從執行環境繼承區域的時候, 我們的意思是在大多數操作系統上的下列動作: 對于一個給定的區域范疇, 比如排序規則,按照下面的順序評估這些環境變量, 直到找到一個已設置的:`LC_ALL`, `LC_COLLATE` (或者對應于相應范疇的其他變量), `LANG`。 如果這些環境變量一個都沒有設置,那么區域缺省為`C`。 > > 一些消息本地化庫也使用環境變量`LANGUAGE`, 它覆蓋所有其它用于設置語言信息的區域設置。 如果有問題,請參考你的操作系統文檔, 特別是gettext的文檔以獲取更多信息。 要能夠將消息翻譯成用戶選擇的語言,編譯時必需選擇NLS選項(`configure --enable-nls`)。 其它區域支持是自動包含的。 ## 22.1.2\. 行為 區域設置特別影響下面的 SQL 特性: * 查詢中使用`ORDER BY`或者對文本數據的標準比較操作符進行排序 * `upper`, `lower`和`initcap`函數 * 模式匹配運算符(`LIKE`, `SIMILAR TO`, 以及POSIX-風格的正則表達式); 區域影響大小寫不敏感的匹配和通過字符分類正則表達式的字符分類。 * `to_char`函數族 * 使用`LIKE`子句的索引能力 PostgreSQL里使用非`C`或者`POSIX`區域的缺點是性能影響。 它降低了字符處理的速度并阻止了在`LIKE`類查詢里面普通索引的使用。 因此,應該只有在你實際上需要的時候才使用它。 為了允許PostgreSQL在非C區域下的`LIKE`子句中使用索引, 有好幾個自定義的操作符類可以用。 這些操作符類允許創建一個嚴格地比較每個字符的索引, 而忽略區域比較規則。請參考[Section 11.9](#calibre_link-82)獲取更多信息。 另外一個方法是使用`C` collation創建索引,正如[Section 22.2](#calibre_link-667) 中討論的。 ## 22.1.3\. 問題 如果經過上面解釋后區域支持仍然不能運轉, 那你就要檢查一下操作系統的區域支持是否正確配置。 要檢查某個區域是否安裝并且正常運轉, 你可以使用`locale -a`命令(如果你的系統提供了該命令)。 請檢查核實PostgreSQL確實使用了你認為它該用的區域設置。 `LC_COLLATE`和`LC_CTYPE`的設置都是在數據庫創建時決定的, 不能被改變除非創建新的數據庫。其它的區域設置包括 `LC_MESSAGES`和`LC_MONETARY`都是由服務器的啟動環境決定的, 但是可以在運行時修改。你可以用`SHOW`命令檢查數據庫正在使用的區域設置。 源碼發布中的`src/test/locale`目錄包含 PostgreSQL的區域支持測試套件。 那些通過解析錯誤消息文本處理服務器端錯誤的客戶端應用很明顯會有問題, 因為服務器信息可能會以不同的語言表示。我們建議這類應用的開發人員改用錯誤代碼機制。 維護消息翻譯表需要許多志愿者的堅持不懈的努力, 他們就是希望PostgreSQL以他們的語言說話的人。 如果你的語言消息目前還不可用或者沒有完全翻譯完成, 那么我們很歡迎你的協助。如果你想幫忙, 那么請參考[Chapter 50](#calibre_link-645)或者向開發者郵遞列表發郵件。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看