【问题标题】:MySQL return all column names in uppercaseMySQL以大写形式返回所有列名
【发布时间】:2016-02-23 12:42:15
【问题描述】:

我有 SQL 查询,只是为了简化它,想象一下在表用户中有列 idnamepass,我希望数据库以大写形式返回这些列名,例如 ID、NAME、PASS。我知道我可以 A)重命名数据库中的列 B)以大写形式选择它 SELECT ID,NAME,PASS FROM users ...但我需要像这样使用它:SELECT * FROM users。我尝试使用 SELECT UPPER(*) FROM users 之类的东西,但它给了我语法错误。

澄清一下:我需要大写的列 names,而不是列值!

我的解决方案:
因此,经过多次尝试,我在获取结果后通过 PHP 完成了它。猜猜这更容易,所以我调用了函数array_change_key_case,它在满意的关键情况下返回数组的键(显然这个数组的键也是列名)

【问题讨论】:

  • 您想以大写形式返回 names 列还是 values 列?更改列名并在 select 语句中输入大写会影响列名。 Upper() 函数影响列值。
  • @Shadow 是的,我刚刚意识到它会影响值,而不是列名。我需要大写的列 names
  • 如果最终目标是简单地在查询中以及可能在 HTML 表中回显这些内容,为什么不使用 PHP 和 strtoupper() 来实现呢?
  • 那么,关于 ^ 的想法是什么?给定答案,您就没有互动,也没有接受的答案。
  • 我喜欢他们这样离开。

标签: php mysql sql select


【解决方案1】:

要以大写形式检索特定表的所有列名,您可以使用以下查询:

SELECT UPPER(`COLUMN_NAME`) 
FROM `INFORMATION_SCHEMA`.`COLUMNS` 
WHERE `TABLE_SCHEMA`='yourdatabasename' 
AND `TABLE_NAME`='yourtablename';

如果您想在选择查询的某些结果集中获取大写的列名,您必须以大写创建列,或者您可以在您的 php 脚本中将它们设置为大写,但在所有列的动态结果集。

【讨论】:

  • 我从您的编辑中获取它“或者您可以在您的 php 脚本中对其进行修改”,您已经看到 my comment 使用 PHP 进行此操作。 OP 也没有回应。
  • 是的,但这只是一个旁注,因为问题是关于在 DB 端执行此操作。也许仍然可以通过某种方式将信息模式加入到选择中并将列名大写?
  • 也许……也许吧。但是,OP 没有回应我对此的评论。所以他们要么忽略它并等待一个神奇的答案(这不会发生,反正不会来自我),或者他们全神贯注于试图让事情顺利进行,或者说“F-this,我会(随便)”。到目前为止,您的答案是先行者;-)
【解决方案2】:

没有办法在 sql 中使用 select * ... 自动将结果集中的字段名称大写,除非您在创建表本身中将它们定义为大写。

然而,在 php 中,您可以动态创建 select 语句,该语句使用 information_schema.columns table 查询表的所有字段名,并将列名以 allcap 格式放入 sql 语句中,或者在输出字段名时对其进行格式化在 php 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-17
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    相关资源
    最近更新 更多