2015-09-25 69 views
0

我希望查询只在名为firstName的列中选择。如果列是名字,那么查询不应该返回任何内容。mysql区分大小写的字段名查询

SELECT firstName as currentName from tableNew WHERE id = $Id 

我尝试下面的代码,但不工作

SELECT binary firstName as currentName from tableNew WHERE id = $Id 

能否请你帮忙吗?

+0

没有找到合适的列将通过硬错误结束从服务器返回(如查询无效)。模式通常不受此类条件限制,列和其他标识符在MySQL中的设计不区分大小写([manual](https://dev.mysql.com/doc/refman/5.5/en/identifier-case- sensitivity.html))。你想通过这个解决什么问题? – jkavalik

+0

您应该测试列是否存在。此链接我的帮助 http://stackoverflow.com/a/5943905/634698 –

+0

我不确定您是否可以根据列存在获取记录。但是你可以通过它的名字来检查列的存在。希望你发现这个解决方案与你的问题有关。检查这 - http://stackoverflow.com/questions/3395798/mysql-check-if-a-column-exists-in-a-table-with-sql – Ranjana

回答

1

在Unix上,表名区分大小写。在Windows上,他们不是。

列,索引和存储的例程名称在任何 平台上都不区分大小写,列别名也不区分大小写。

1

如果你有机会获得INFORMATION_SCHEMA做到这一点:

SELECT firstName as currentName from tableNew WHERE id = $Id AND (SELECT COUNT(TABLE_NAME) 
FROM information_schema.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'mydbname' 
AND TABLE_NAME = 'tableNew' 
AND BINARY COLUMN_NAME = 'firstName') > 0;