今天在写SQL语句时发现一个问题:
当prod表里的p_abc字段有两条记录分别是“ea”和“EA”时,如果对这个字段进行查询用这样的语句:
SELECT * FROM prod WHERE p_abc="EA";
这个查询则会把字段是“ea”的记录查询到,而不是“EA”字段。
分析:由于SQL语句在默认的情况下不区分字段的大小写,因此才出现有这样的问题。
解决:在SQL语句中强制它区分大小写,SQL语句改写为:
SELECT * FROM prod WHERE CASE (p_abc AS binary)="EA";
这样就是以字符串的二进制进行比较,区分开了大小写。
当prod表里的p_abc字段有两条记录分别是“ea”和“EA”时,如果对这个字段进行查询用这样的语句:
SELECT * FROM prod WHERE p_abc="EA";
这个查询则会把字段是“ea”的记录查询到,而不是“EA”字段。
分析:由于SQL语句在默认的情况下不区分字段的大小写,因此才出现有这样的问题。
解决:在SQL语句中强制它区分大小写,SQL语句改写为:
SELECT * FROM prod WHERE CASE (p_abc AS binary)="EA";
这样就是以字符串的二进制进行比较,区分开了大小写。