mysql不区分大小写的字段名称

时间:2016-07-10 17:47:50

标签: mysql case-insensitive

我理解“TABLE”名称区分大小写(取决于操作系统,Linux或Windows),但我发现字段名称也区分大小写。我读了几个地方说他们不是。我在TABLE NAMES上找到了很多信息,但在FIELDNAMES上却没有太多信息。

但是这个例子给出了错误的抱怨。

fieldname =“姓名” 如果我做了以下 - 它出错了

编辑:忘了:寻找运行时修复,因为这不是我的数据库。

SELECT * FROM some_table WHERE name = 'something'

除非我将'name'更改为'Name',否则会出错。 2个问题 如果这对我来说是一个错误,那么我错了什么? 如果没有,是否有一个标志设置来控制它。似乎开发人员在数据库中出现问题,有时他们会因为w / e原因而更改字段,最终会使用camelCase。

似乎我必须编写冗余代码以适应区分大小写的搜索。 (这就是为什么我认为我可能会出错)

2 个答案:

答案 0 :(得分:0)

这是基于你的评论,即PHP与echo $ result区分大小写[' Title'];

这是一个PHP函数,允许您在PHP中使用不区分大小写的索引作为关联数组。

$test = array("Name"=>"Russell");
echo value($test,"name");

function value(&$row,$field) {
    // Get the value of a field.
    foreach($row as $key=>$value) {
        if (strcasecmp($key,$field)==0) {
            return $value;
        }   
    }
    throw new Exception("Field $field wasn`t found.");
}

答案 1 :(得分:-1)

我认为你机器上mysql的lower_case_table_names系统变量设置为0,这是区分大小写的

如果设置为0,表名将按指定的方式存储,并且比较区分大小写。如果设置为1,则表名称以小写形式存储在磁盘上,并且比较不区分大小写。如果设置为2,则表名称将按给定方式存储,但会以小写形式进行比较。此选项也适用于数据库名称和表别名。

供您参考,请参阅以下链接。 http://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivity.html

我希望这能解决你的问题