云数据库 GAUSSDB-平台和客户端兼容性:enable_convert_illegal_char
enable_convert_illegal_char
参数说明:对输出结果中的非法编码是否不进行校验并以占位符替换显示。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示开启,非法编码将替换为convert_illegal_char_mode参数指定符号的编码。
- off:表示关闭,查询结果中包含的非法编码会校验后报错。
默认值:off
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值,仅在数据中存在特殊字符且需要对特殊字符进行强制不报错处理时开启该参数。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
- 当数据库字符集为utf8、zhs16gbk、gb18030、gb18030-2022、latin1,enable_convert_illegal_char=on时生效,且当数据库客户端与服务端字符集不相同时,非法编码将以占位符形式显示。
- 特殊字符范围:本文所指的特殊字符范围仅包括完全异常编码和混合编码,不支持\u0000字符。若字符编码中包含\u0000字符,在使用时通常会在\u0000处截断,无法保证数据的完整性。
- 若数据库客户端与服务端字符集不相同,在enable_convert_illegal_char=off时,数据库将超出当前字符集编码外的特殊字符(不包含\x0000字符)替换为\x3F(即显示为?)编码写入数据库中;当enable_convert_illegal_char=on时,只能使用函数dbe_raw.cast_to_varchar2()将非法编码原编码插入数据库中,并以占位符形式显示。
- 当开启GUC参数时,特殊字符在下表所列的函数、高级包函数中的表现为:
- 在客户端与服务端字符集一致时,特殊字符在查询时不报错,与开启GUC参数前的行为保持一致。
- 在客户端与服务端字符集不一致时,特殊字符在查询时显示为占位符(默认为?)。
- 不建议客户使用函数处理包含特殊字符的字符串,下表所列函数处理包含特殊字符的字符串不会产生报错,但不保证结果的正确性。
序号 |
函数名/高级包函数名 |
---|---|
1 |
bit_length(string) |
2 |
btrim(string text [, characters text]) |
3 |
char_length(string) character_length(string) |
4 |
chr(cvalue int|bigint) chr(integer) |
5 |
concat(str1,str2) |
6 |
concat_ws(sep text, str"any" [, str"any" [, ...] ]) |
7 |
decode(string text, format text) |
8 |
dump(expr[, return_fmt [, start_position [, length ] ] ]) |
9 |
encode(data bytea, format text) |
10 |
find_in_set(text, set) |
11 |
format(formatstr text [, str"any" [, ...] ]) |
12 |
left(str text, n int) |
13 |
length(string) |
14 |
lengthb(text/bpchar) |
15 |
ltrim(string [, characters]) |
16 |
md5(string) |
17 |
notlike(x bytea name text, y bytea text) |
18 |
octet_length(string) |
19 |
overlay(string placing string FROM int [for int]) |
20 |
quote_ident(string text) |
21 |
quote_literal(string text) |
22 |
quote_nullable(string text) |
23 |
rawcat(raw,raw) |
24 |
regexp_count(string text, pattern text [, position int [, flags text]]) |
25 |
regexp_instr(string text, pattern text [, position int [, occurrence int [, return_opt int [, flags text]]]]) |
26 |
regexp_like(source_string, pattern [, match_parameter]) regexp_like(text,text,text) |
27 |
regexp_matches(string text, pattern text [, flags text]) |
28 |
regexp_replace(string, pattern, replacement [,flags ]) |
29 |
regexp_split_to_array(string text, pattern text [, flags text ]) |
30 |
regexp_split_to_table(string text, pattern text [, flags text]) |
31 |
regexp_substr(source_char, pattern) regexp_substr(string text, pattern text [, position int [, occurrence int [, flags text]]]) |
32 |
repeat(string text, number int ) |
33 |
repexp_replace(string text, pattern text [, replacement text [, position int [, occurrence int [, flags text]]]]) |
34 |
replace(string text, from text, to text) |
35 |
replace(string, substring) |
36 |
reverse(str) |
37 |
right(str text, n int) |
38 |
rtrim(string [, characters]) |
39 |
sha(string) |
40 |
sha1(string) |
41 |
sha2(string,hash_length) |
42 |
split_part(string text, delimiter text, field int) |
43 |
substring(string [from int] [for int]) substring(string from pattern for escape) substring(string from pattern) |
44 |
substring_inner(string [from int] [for int]) |
45 |
tconvert(key text, value text) |
46 |
to_single_byte(char) |
47 |
translate(string text, from text, to text) |
48 |
trim([leading |trailing |both] [characters] from string) |
49 |
unistr(string) |
50 |
vsize(expr) |
51 |
PKG_UTIL.RAW_CAST_FROM_VARCHAR2 |
52 |
PKG_UTIL.LOB_CONVERTTOCLOB |
53 |
PKG_UTIL.LOB_RAWTOTEXT |
54 |
PKG_UTIL.LOB_TEXTTORAW |
55 |
PKG_UTIL.RAW_CAST_TO_VARCHAR2 |
56 |
DBE_OUTPUT.PUT |
57 |
DBE_OUTPUT.PUT_LINE |
- GaussDB学习_gaussdb教程_高斯数据库学习_华为云
- GaussDB考试_GaussDB数据库考试_高斯数据库考试_华为云
- GaussDB培训_GaussDB教程_高斯数据库培训-华为云
- GaussDB用法_GaussDB数据库使用方法_高斯数据库如何使用_华为云
- GaussDB数据库概念_openGauss_华为高斯数据库概念
- GaussDB数据库考试_GaussDB认证_高斯数据库考试_华为云
- GaussDB学习_gaussdb数据库_高斯数据库学习_华为云
- GaussDB使用技巧_高斯数据库下载_高斯数据库使用技巧_华为云
- GaussDB工具_gaussdb怎么读_高斯数据库工具_华为云
- GaussDB数据库安全_GaussDB收费吗_高斯数据库安全