成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

PostgreSQL本地化設(shè)置對(duì)SQL特性的影響有哪些

這篇文章主要介紹“PostgreSQL本地化設(shè)置對(duì)SQL特性的影響有哪些”,在日常操作中,相信很多人在PostgreSQL本地化設(shè)置對(duì)SQL特性的影響有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”PostgreSQL本地化設(shè)置對(duì)SQL特性的影響有哪些”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)是專業(yè)的海港網(wǎng)站建設(shè)公司,海港接單;提供做網(wǎng)站、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行海港網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

PostgreSQL在使用initdb初始化數(shù)據(jù)庫(kù)時(shí),提供了”本地化”的參數(shù)locale,如不指定該參數(shù)則默認(rèn)為空,即使用OS的locale設(shè)定.
本地化設(shè)置對(duì)以下SQL特性有影響:
1.排序和比較操作 : Sort order in queries using ORDER BY or the standard comparison operators on textual data
2.內(nèi)置函數(shù) : The upper, lower, and initcap functions
3.模式匹配 : Pattern matching operators (LIKE, SIMILAR TO, and POSIX-style regular expressions); locales affect both case insensitive matching and the classification of characters by character-class regular expressions
4.to_char相關(guān)函數(shù) : The to_char family of functions
5.LIKE能否使用索引 : The ability to use indexes with LIKE clauses

排序
同樣的數(shù)據(jù),使用不同的LC_COLLATE,SQL輸出不同:

postgres=# SELECT name FROM unnest(ARRAY['MYNAME', ' my_name', 'my-image.jpg', 'my-third-image.jpg']) name ORDER BY name collate "C";
        name        
--------------------
  my_name
 MYNAME
 my-image.jpg
 my-third-image.jpg
(4 rows)
postgres=# SELECT name FROM unnest(ARRAY['MYNAME', ' my_name', 'my-image.jpg', 'my-third-image.jpg']) name ORDER BY name collate "zh_CN";
        name        
--------------------
 my-image.jpg
  my_name
 MYNAME
 my-third-image.jpg
(4 rows)

collate指定為”C”,則使用默認(rèn)的字符串的二進(jìn)制ASCII碼值進(jìn)行對(duì)比,而指定是zh_CN則不是.

使用zh_CN其行為按不區(qū)分大小寫進(jìn)行處理

postgres=# SELECT name FROM unnest(ARRAY['MYNAME1', ' my_name2', 'my-image.jpg', 'my-third-image.jpg']) name ORDER BY name collate "zh_CN";
        name        
--------------------
 my-image.jpg
 MYNAME1
  my_name2
 my-third-image.jpg
(4 rows)
postgres=# SELECT name FROM unnest(ARRAY['myname1', ' myname2', 'myimage.jpg', 'mythirdimage.jpg']) name ORDER BY name collate "zh_CN";
       name       
------------------
 myimage.jpg
 myname1
  myname2
 mythirdimage.jpg
(4 rows)

郵件列表中的解釋如下:

The behavior of each collation comes from the operating system’s own
libc, except for the C collation, which is based on the ordering
implied by strcmp() comparisons. Generally, most implementations have
the behavior you describe, in that they assign least weight of all to
caseness and whitespace, and somewhat more weight to punctuation. I
don’t think that there is much that can be done about it in practice,
though in principal there could be a collation that has all the
properties you want.

內(nèi)置函數(shù)
如initcap,在法語和C下面會(huì)有不同

postgres=#  select initcap('élysée' collate "C");
 initcap 
---------
 éLyséE
(1 row)
postgres=#  select initcap('élysée' collate "fr_FR");
 initcap 
---------
 élysée
(1 row)

在中文語境下,全角字符的小寫字母會(huì)轉(zhuǎn)換為全角的大寫字母

postgres=# select initcap('a' collate "zh_CN");
 initcap 
---------
 A
(1 row)
postgres=# select initcap('a' collate "C");
 initcap 
---------
 a
(1 row)

在LC_COLLATE下,只會(huì)對(duì)7F以下的ASCII字符生效,其他字符不生效

模式匹配

postgres=#  select 'élysée' ~ '^\w+$' collate "fr_FR";
 ?column? 
----------
 t
(1 row)
postgres=#  select 'élysée' COLLATE "C" ~ '^\w+$';
 ?column? 
----------
 f
(1 row)

LIKE能否使用索引

postgres=# CREATE TABLE t_sort (
postgres(#     a text COLLATE "zh_CN",
postgres(#     b text COLLATE "C");
CREATE TABLE
postgres=# 
postgres=# INSERT INTO t_sort SELECT md5(n::text), md5(n::text)
postgres-#     FROM generate_series(1, 1000000) n; 
INSERT 0 1000000
postgres=# CREATE INDEX ON t_sort USING btree (a);
CREATE INDEX
postgres=# CREATE INDEX ON t_sort USING btree (b);
CREATE INDEX
postgres=# ANALYZE t_sort;
ANALYZE
postgres=# SELECT * FROM t_sort LIMIT 2;
                a                 |                b                 
----------------------------------+----------------------------------
 c4ca4238a0b923820dcc509a6f75849b | c4ca4238a0b923820dcc509a6f75849b
 c81e728d9d4c2f636f067f89cc14862c | c81e728d9d4c2f636f067f89cc14862c
(2 rows)
postgres=# explain SELECT * FROM t_sort WHERE a LIKE 'c4ca4238a0%';
                                QUERY PLAN                                 
---------------------------------------------------------------------------
 Gather  (cost=1000.00..18564.33 rows=100 width=66)
   Workers Planned: 2
   ->  Parallel Seq Scan on t_sort  (cost=0.00..17554.33 rows=42 width=66)
         Filter: (a ~~ 'c4ca4238a0%'::text)
(4 rows)
postgres=# explain SELECT * FROM t_sort WHERE b LIKE 'c4ca4238a0%';
                                  QUERY PLAN                                  
------------------------------------------------------------------------------
 Index Scan using t_sort_b_idx on t_sort  (cost=0.42..8.45 rows=100 width=66)
   Index Cond: ((b >= 'c4ca4238a0'::text) AND (b < 'c4ca4238a1'::text))
   Filter: (b ~~ 'c4ca4238a0%'::text)
(3 rows)

使用zh_CN不能用上索引,但使用C可以用上索引

到此,關(guān)于“PostgreSQL本地化設(shè)置對(duì)SQL特性的影響有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

分享標(biāo)題:PostgreSQL本地化設(shè)置對(duì)SQL特性的影響有哪些
網(wǎng)頁URL:http://jinyejixie.com/article26/psehjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、標(biāo)簽優(yōu)化搜索引擎優(yōu)化、外貿(mào)建站微信小程序、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
辽中县| 南宁市| 义马市| 乐至县| 南漳县| 烟台市| 建宁县| 右玉县| 西安市| 治县。| 星座| 和静县| 双桥区| 永城市| 霍州市| 嘉鱼县| 东乡族自治县| 昭苏县| 东安县| 绥德县| 翼城县| 北安市| 福建省| 乐山市| 金沙县| 革吉县| 乌鲁木齐县| 太仓市| 凤台县| 馆陶县| 乾安县| 衡水市| 奇台县| 六枝特区| 武清区| 伊宁县| 英山县| 慈溪市| 共和县| 天峨县| 突泉县|