gpt4 book ai didi

MySQL/SQL 能否返回表头下的一些非表数据?

转载 作者:行者123 更新时间:2023-11-29 17:43:25 28 4
gpt4 key购买 nike

我正在尝试编写一个过程或函数,它可以返回所有表头和一行数据,以充当下面的应用程序指令 - 这些指令不会与表中的实际字段具有相同的数据类型。

例如

我的表格:

| pk | fName | lName | comment |

我会跑

从 MyTable 中选择 * WHERE PK = 0;

这会将所有 header (由于没有存在 0 的 PK,所以没有行)返回到 ADODB.RecordSet,我可以在其中提取字段数据类型、字符限制等。

  • 如果可能的话,我希望在每个字段中强制返回 TEXT,以便输出包含每种类型列的自定义标识符:

    | pk | fName | lName | comment |
    EX UQ UQ OPT

到目前为止,我所想到的只是查询数据库两次,一次查询表,一次查询自定义条目,这些条目仅作为逗号分隔的列表返回,例如

CREATE PROCEDURE `definition` (tbl VARCHAR(256))
BEGIN

IF tbl = 'MyTable' THEN
SELECT * FROM `MyTable` WHERE `pk` = 0;
ELSEIF tbl = 'MyTableId' THEN
SELECT `id` FROM `tableId` WHERE `table` = tbl;
END IF;

END

这可行,但很困惑。当我真的想将定义保留在存储过程中时,我需要一个单独的表来存储 ID - 如下所示:

IF tbl = 'MyTable' THEN
SELECT `pk`, `fName`, `lName`, `comment` FROM `MyTable` WHERE `pk` = 0
VALUES 'EX', 'UQ', 'UQ', 'OPT';

显然这不起作用,甚至不确定是否可以这样做,因为值EX不是像pk那样的INT列预计。

这可能吗?!

编辑

我知道我可以做类似 SELECT 'Hey' FROM tbl; 的事情,但不确定将其包含在特定标题下的链接。

最佳答案

我输入自己的答案只是为了防止其他人来寻找相同的想法 - 我设法让它在一个查询中工作......

SELECT *, 'EX,UQ,UQ,OPT' FROM MyTable WHERE PK = 0;

在应用程序方面,我所要做的就是从 headers.count - 1 获取所有常规信息,然后 split() 逗号上的最后一个字段名称。我也做了检查;如果分割后的 array.count 不等于 headers.count-1 ,那么就会出现非常错误的情况,以防表稍后发生更改。

这意味着我可以将对许多表信息的请求整理为一个衬垫,并将存储过程中的所有“自定义”信息放在同一行上。为了扩展,我实际上可以指定对齐的表标题而不是 *:

SELECT
pk, fName, lName, comment,
'EX,UQ,UQ,OPT'
FROM MyTable WHERE PK = 0;

关于MySQL/SQL 能否返回表头下的一些非表数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49915280/

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