postgresql lc_ctype不同值之间的转换

LC_CTYPE 用于决定字元是否为数字,字母,空格,标点符号,及大小写等[1]。将 LC_CTYPE 设为「C」表示 isupper(c) 或 tolower(c) 等 C 语言函数[2]仅针对 US-ASCII 范围内的字元给出预期结果。因为像 upper()、lower() 或 initcap 这类型的Postgres SQL 语句是在libc 函数上实作的,所以只要字串中存在非 US-ASCII 字符,它们就会受到此影响。因此,在进行LC_CTYPE转换时,需要注意表格中是否有非 US-ASCII 字符,并在进行任何变动前后,建议需要根据实际环境用例及数据进行测试,以确定其影响。

#数据库my_db的lc_ctype为C:

my_db=> SELECT name, setting FROM pg_settings WHERE category ~ 'Locale';
            name            |      setting      
----------------------------+-------------------
 client_encoding            | UTF8
 DateStyle                  | ISO, MDY
 default_text_search_config | pg_catalog.simple
 extra_float_digits         | 1
 IntervalStyle              | postgres
 lc_collate                 | C
 lc_ctype                   | C <----------------
 lc_messages                | 
 lc_monetary      

你可能感兴趣的:(postgresql)