mysql - 如何通过表中的 "numeric"位置选择列?

标签 mysql perl

我试图通过表格中的“x”位置来选择列。

深度学习

my $example = $hookup->prepare(qq{SELECT This,That,Condition,"I also want COLUMN-10" FROM tbl LIMIT ? ?});

    ###column_number=10 ordinal_position?? 
    $example->execute('2','10') or die "Did not execute";

这可能吗,还是我需要对那一列运行另一个单一选择?

我遇到的一个问题是名为“Condition”的列。出于某种原因,当我尝试 select Condition 时,执行会终止。我从未尝试过,但是,如果列名是 SELECT 怎么办?

另一个注意事项是表格有 75 列宽,我只需要其中的 50 列。 Col 的名字非常冗长,所以我想按他们的“位置”来称呼他们。这也将允许将来更改列名而无需更改 select 语句。

我是新手,所以请根据我的水平解释任何答案。感谢您的帮助..

最佳答案

您几乎不应该在任何代码中依赖表中的列号(即使理论上您可以在技术上这样做)。

原因有很多,最重要的一个是有人总是可以更改表格并在开头/中间插入一列,从而完全破坏您的代码。

第二个原因是列位置 - 即使您假设表格永远不会改变 - 会导致绝对不可读,因此无法维护代码。您还记得 2 年后第 13 列是“last_name_3”吗?

请注意,如果您的问题是,例如您的代码中有类似 SELECT fn11, fn12, fn13, ... fn32 的内容,并且您觉得拼写出 fn11..fn32 是a drag,您不仅 100% 正确,而且您绝对应该通过 Perl 习语删除所说的 drag,如下所示:"SELECT "。 join(", ", map { "fn$_"} (11..32));


话虽如此,如果你想知道如何从理论上做到这一点,就像一个“很酷的技术技巧”练习一样,我不知道通过 DBI 一般地做它的好方法,但你通常可以做到以特定于数据库的方式。

为此,您应该注意:

  1. 几乎所有数据库都通过某种“CREATE TABLE”语句创建表,该语句采用有序的列列表(大多数关系数据库实际上以该顺序在行中物理存储值,因此这很重要 - 即使理论上的关系正如 marcog 所说,微积分将列视为无序)。

  2. 几乎所有数据库都包含一个特殊的表,该表列出了哪些表包含哪些列(syscolumns 在 Sybase 中,INFORMATION_SCHEMA.COLUMNS 在 MySQL 中),并且该表包含一个数字 ID用于订购它们的列与“创建”订单相同;甚至是特殊的“顺序”字段(例如 MySQL 中的 ORDINAL_POSITION 值)。

    因此,您可以 - 提前 - 为您想要的表及其顺序查询有序的列列表。要查询 MySQL,SELECT COLUMN_NAME, ORDINAL_POSITION FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME="XXX"。将数据存储在@columns 列表中(或者如果您有很多表,则存储数组的散列,%columns,表名是键)。

    然后,在构建查询时,您只需说

    “选择 $columns{table1}->[11],$columns{table1}->[13], ...”

    请注意,发送到服务器的实际 SQL 将包含列名,但您不会在代码中的任何位置硬编码这些名称。

关于mysql - 如何通过表中的 "numeric"位置选择列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4575015/

相关文章:

perl - 我可以将 Perl 的映射与数组切片一起使用吗?

perl - 如何祝福传递给子程序的列表中的对象?

sql - WHERE x IN (5) 与 WHERE x = 5 ... 为什么使用 IN?

php - 如何将关键词与最佳描述相匹配

java - 如果数据库中已存在记录,则阻止 HTTP POST 请求

php - 构建新前端的 Wordpress 库/SQL 查询?

mysql - 当我试图从数据库中获取数据到文本字段时,显示错误

mysql - 存储由 0 和 1 组成的长数字的最佳数据类型

python - 是否可以将 Python 或 Perl 与 Ruby 集成?

linux - 系统 ("linux_command") 与 Perl 库函数