gpt4 book ai didi

sql - 如何在 Oracle SQL 中对结果进行不区分大小写的排序?

转载 作者:太空狗 更新时间:2023-10-30 01:52:18 24 4
gpt4 key购买 nike

从 Java 中查询不区分大小写的 SQL 数据库的经典方法如下:

String name = ...;  // get the user's input (case is unknown)
String sql = "select * from Person where lower(name) = ?";
Object jdbcBindVariable = name.toLowerCase();
// ... using JDBC, bind that variable and run the SQL query

问题是小写字母是特定于语言环境的操作。例如,小写字母“I”在英语和土耳其语中会给出不同的结果。上面代码中,有两个小写操作:

  • String#toLowerCase() 方法
  • lower() 数据库函数

如何确保 Java 和数据库使用相同的语言环境,从而执行有效的比较?

我知道 String 类有一个 toLowerCase(Locale) 方法,但我如何知道数据库使用的 Locale?我可以通过编程方式检查这一点,还是必须将语言环境硬编码为我认为数据库(在本例中为 Oracle 10g)配置的语言环境?

最佳答案

简单的答案是让数据库来做。这样,绑定(bind)变量的小写方式将与列值的小写方式保持一致。

String sql = "select * from Person where lower(name) = lower(?)";

关于sql - 如何在 Oracle SQL 中对结果进行不区分大小写的排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2181398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com