避免在多字节代码集中出现

GBase 8s 数据库服务器不允许出现不完整字符。当字节的指定范围包含不完整字符时,GLS 功能防止数据库服务器按字面原样返回该范围。

如果数据库语言环境支持多字节代码集,并且您在查询中指定了特定列子串,数据库服务器将用单字节空格字符替换任何截断的多字节字符。

例如:假定 multi_col 列包含字符串 A1A2A3A4B1B2B3B4 并且执行下列 SELECT 语句:
SELECT multi_col FROM tablename WHERE multi_col[2,4] = 'A1A2B1B2'
因为数据库服务器将子串 multi_col[2,4](也就是字符串 A2A3A4)转换为三个单字节空格 (sss),所以查询不会返回任何行。WHERE 子句指定此搜索条件:
WHERE 'sss' = 'A1A2A3'

因为此条件从不为真,所以查询未检索到任何匹配的行。

GBase 8s 数据库服务器会替换每个单独子串操作中的不完整字符(即使它们已连接)。

例如:假定 multi_col 列包含 A1A2B1B2C1C2D1D2,并且 WHERE 子句包含下列条件:
multi_col[2,4] | multi_col[6,8]
因为连接的结果 (A2B1B2C2D1D2) 包含两个不完整字符:A2 和 C2,所以查询不会返回任何行。GBase 8s 数据库服务器将这些不完整字符转换成单字节空格并创建下列 WHERE 子句条件:
WHERE 'sB1B2sD1D2' = 'A1A2B1B2'

此条件也从不为真,因此查询未检索到任何匹配的行。