如何在 sql 查询中忽略大小写

how to ignore case on sql query

我有这个 sql 查询:

var userLogin = "select * from login where USERNAME = ?";

问题是,有些用户名是 testDummy123@gmail.com,但用户可能会输入 testdummy123@gmail.com,所以我只想忽略一般的大写或小写并执行一个查询不管大写还是小写,随便找找

这怎么可能?

一种方法是:

where lower(username) = lower(?)

但是,您最好为此目的使用不区分大小写的排序规则。这将使代码更容易使用索引。或者,确保 username 存储为小写,这样您就可以使用:

where username = lower(?)

这也是索引兼容的。

您可以将用户名的相等性检查两边小写:

var userLogin = "SELECT * FROM login WHERE LOWER(USERNAME) = ?";

? 占位符,您将绑定用户名变量的小写版本:

var username = "testDummy123@gmail.com";
username = username.toLowerCase();  // bind this variable to ?