gpt4 book ai didi

php - MySQL 到 DB2 通过 ADOdb PHP

转载 作者:可可西里 更新时间:2023-11-01 08:37:48 25 4
gpt4 key购买 nike

我正在尝试将一个小型 PHP 应用程序从 MySQL 移植到 DB2。该应用程序通过 ADOdb 连接到 MySQL 数据库。我成功地通过 ADOdb 连接到 DB2 数据库,但在执行 SQL 查询时却不太成功。需要修改查询以在要执行的表名周围包含引号 ("")。他们在 ADOdb 中有任何解决方法吗?修改每个查询有点乏味(这实际上首先违背了使用 ADOdb 的目的)。

谢谢!

最佳答案

在 DB2 中,默认情况下,模式、表和列名称不区分大小写。当您发表声明时:

create table myid.test (
c1 int
c2 int
);

DB2 将模式、表和列名折叠成大写。因此,如果查看系统目录,您会看到该表名为 MYID.TEST 并且包含列 C1 和 C2。

DB2 也将所有查询折叠成大写(默认情况下)。因此,当您查询此表时,以下语句是相同的:

从 myid.test 中选择 c1、c2

从 MYID.TEST 中选择 C1、c2

从 MyID.Test 中选择 c1、C2

但是,DB2 可以使用区分大小写的名称:如果您在定义中引用模式/表/列名称,那么 DB2 将使用准确的字符串:

   create table "MyID"."Test" (
c1 int,
"C2" int
);

在这种情况下,您将在系统目录中看到大小写混合的架构/表/列名称。

这会带来不幸(和痛苦)的副作用,即要求您在所有查询、DML 和 DDL 中引用架构/表/列名称。

使用大小写混合的名称不是最佳做法。

最好的解决方案是重新创建不区分大小写名称的表(即不要将架构/表/列名称放在引号中。

这将消除您使用 ADODB 覆盖所有内容的需要。 ADODB 可能有一些解决方法,但其他任何人仍然会感到痛苦。

关于php - MySQL 到 DB2 通过 ADOdb PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5728680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com