SQL 转换规则

当比较两个字符串时,如果需要,首先将其中一个字符串转换为另一个字符串的编码字符集。

仅当满足以下所有条件时,才需要进行字符转换:

  • 这两个字符串的 CCSID 不同。
  • 两个 CCSID 都不是 65535。
  • 选择进行转换的字符串既不为 null 也不为空。
  • CCSID 转换选择表指示需要转换。

如果一个字符串具有 SBCS CCSID ,而另一个是相同类型的操作数并且具有混合数据 CCSID ,那么将转换 SBCS 数据字符串。 否则,为转换选择的字符串取决于每个操作数的类型。 下表显示在给定操作数类型的情况下选择了哪个操作数进行转换。

第一个操作数 列值 (第二个操作数) 派生值 (第二个操作数) 专用寄存器 (第二个操作数) 常量 (第二个操作数) 主变量 (第二个操作数)
列值
派生值 第一个
专用寄存器 第一个 第一个
常量 第一个 第一个 第一个
主变量 第一个 第一个 第一个 第一个

在任何操作中使用包含外部编码方案中的数据的主变量之前,总是有效地将其转换为本机编码方案。 先前的规则基于已发生此转换的假设。

如果不能转换字符串的字符或使用 CCSID 转换选择表,但不包含有关 CCSID 对的任何信息,那么会发生错误。 如果将字符串的字符转换为替换字符,那么会发生警告。