IN() 函数大小敏感判断
如果你在使用 MySQL 的 IN()
函数时发现大小写不敏感,那可能是由于你的 MySQL 数据库的配置设置了大小写不敏感的规则。
这通常是由 lower_case_table_names
参数引起的。在 MySQL 中,这个参数决定了数据库系统在存储和比较表名或数据库名时是否区分大小写。如果设置为0,则大小写敏感;如果设置为1,则表示将表名和数据库名转换为小写并存储,但在比较时不区分大小写;如果设置为2,则表示表名和数据库名被存储为给定的情况,但在比较时不区分大小写。
因此,如果你的 lower_case_table_names
参数设置为1,那么 MySQL 将在进行表名和数据库名的比较时不区分大小写,这可能会影响到 IN()
函数的行为。
要查看 MySQL 当前的 lower_case_table_names
参数设置,你可以执行以下命令:
SHOW VARIABLES LIKE 'lower_case_table_names';
如果结果为1,说明你的数据库配置为大小写不敏感。如果你想要更改这个设置,你需要修改 MySQL 的配置文件,然后重启 MySQL 服务才能生效。
IN() 函数不区分大小写比较方法
在 MySQL 中,IN()
函数是区分大小写的。这意味着,如果你在 IN()
函数中提供的字符串是不同大小写的,MySQL 将会区分它们。例如,IN('abc', 'ABC')
在MySQL中会被视为两个不同的值。
如果你想进行大小写不敏感的比较,你可以在查询中使用 LOWER()
或 UPPER()
函数将所有的比较项转换为相同的大小写。例如:
SELECT * FROM table_name WHERE LOWER(column_name) IN ('abc', 'def');
或者
SELECT * FROM table_name WHERE UPPER(column_name) IN ('ABC', 'DEF');
这样做可以确保大小写不会影响查询结果。
后端代码List校验方式
@Testpublic void test1() {List<String> originalList = Arrays.asList("Hello", "World", "Java");List<String> lowerCaseList =originalList.stream().map(String::toLowerCase).collect(Collectors.toList());System.out.println(lowerCaseList);}@Testpublic void test2() {String[] originalArray = {"Hello", "World", "Java"};List<String> lowerCaseList =Arrays.stream(originalArray).map(String::toLowerCase).collect(Collectors.toList());System.out.println(lowerCaseList);}@Testpublic void test3() {String[] originalArray = {"Hello", "World", "Java"};String[] lowerCaseList =Arrays.stream(originalArray).map(String::toLowerCase).toArray(String[]::new);Arrays.stream(lowerCaseList).forEach(System.out::println);}