我有SQL查询,只是为了简化它,想象在表用户中有列id
,name
,pass
,我希望数据库以大写形式返回这些列名,如ID, NAME,PASS。我知道我可以A)重命名数据库中的列B)像大写一样选择它
SELECT ID,NAME,PASS FROM users
...但我需要像这样使用它:SELECT * FROM users
。我尝试使用像SELECT UPPER(*) FROM users
这样的东西,但它给了我语法错误。
澄清一下:我需要大写的名称列,而不是列值!
我的解决方案:
经过多次尝试后,我在获取结果后通过PHP完成了它。猜猜它比较容易,所以我调用了函数array_change_key_case,它在满意的键情况下返回数组的键(显然这个数组的键也是列名)
答案 0 :(得分:5)
要以大写形式检索特定表的所有列名,可以使用以下查询:
SELECT UPPER(`COLUMN_NAME`)
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='yourdatabasename'
AND `TABLE_NAME`='yourtablename';
如果要在select查询的某个结果集中获取大写列名称,则必须以大写形式创建列,或者可以在php脚本中将它们置于高位,但是无法生成它们在结果集中以大写形式动态显示所有列。
答案 1 :(得分:0)
sql中没有办法使用select * ...
在结果集中自动大写字段名称,除非你在create table本身中将它们定义为大写。
但是,在php中,您可以动态创建select语句,该语句使用information_schema.columns table查询表的所有字段名称,并将列名称以allcap格式放入sql语句中,或者在输出时将其格式化php中的字段名称。