---
title: "MySQL 模式下拼接符 `||` 不识别导致计划笛卡尔积-OceanBase数据库使用指南"
description: "了解OceanBase数据库在实际应用中关于 MySQL 模式下拼接符 `||` 不识别导致计划笛卡尔积相关的常见问题和使用技巧，帮助您快速解决 MySQL 模式下拼接符 `||` 不识别导致计划笛卡尔积的难题。"
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# MySQL 模式下拼接符 `||` 不识别导致计划笛卡尔积

更新时间：2026-05-15 09:06

适用版本： V1.4.x、V2.1.x、V2.2.x、V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x 内容类型：Troubleshoot  

## 问题现象

在 MySQL 模式下 SQL 条件中使用 `||`管道拼接符时候需要特别注意，默认情况下 MySQL 模式不识别这个符号，需要显示添加 `sql_mode=PIPES_AS_CONCAT` 才能识别，否则会产生笛卡尔积导致 SQL 超时。

## 问题原因

如下 `SQL ON A.BIZ_ORG_ID = '01'||C.LV5_ORG_ID||'999'` 关联条件由于管道符不识别导致产生 `NLJ CARTESIAN` ；调整后计划，优化器识别到管道符转换为 `cast((T_OP_CNN, (T_OP_CNN, '01', C.LV5_ORG_ID), '999'), VARCHAR(1048576))])` 。

## 关键信息

例如计划中会有笛卡尔积：

`NESTED-LOOP OUTER JOIN CARTESIAN` 。

## 问题的风险及影响

SQL 超时，计划错误。

## 影响租户

影响 OceanBase 数据库中的 SYS 租户和 MySQL 租户，对于 Oracle 租户无影响。

## 适用版本

OceanBase 数据库所有版本。

## 解决方法及规避方式

- 解决方法：

  调整 SQL 写法，或者添加 `sql_mode中PIPES_AS_CONCAT` 参数。
 - 规避方式：

     - 添加 `sql_mode='PIPES_AS_CONCAT,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE'`;
     - 使用 concat 函数替换。

上一篇

[MySQL 模式 Truncate/Drop 分区操作耗时很长的原因](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000207709)

下一篇

[收集统计信息前的计划为何会不稳定？](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001048742) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
