从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
Run Code Online (Sandbox Code Playgroud)
问题是较低的外壳是特定于语言环境的操作.例如,下限字母" I"会产生不同的英语和土耳其语结果.在上面的代码中,有两个下层操作:
如何确保Java和数据库使用相同的语言环境,从而执行有效的比较?
我知道String类有一个toLowerCase(Locale)方法,但我怎么知道数据库使用的Locale?我可以以编程方式检查这个,还是必须将语言环境硬编码到我认为数据库(在本例中为Oracle 10g)配置的语言环境?
我正在使用的软件使用全小写符号名称将NETLIB BLAS/LAPACK嵌入其源代码但现在将应用程序移植到Windows时我发现英特尔MKL和此平台的其他几种BLAS/LAPACK实现使用全大写符号名.有没有办法告诉gnu编译器/链接器在匹配符号名称时忽略大小写?
.
.
.
undefined reference to `_dgeqp3'
.
.
.
$ nm /lib/LAPACK.lib | grep -i " T _dgeqp3"
00000000 T _DGEQP3
Run Code Online (Sandbox Code Playgroud) 我的搜索区分大小写,但我希望它不区分大小写.在MySQL中,我将我的数据库和表设置为utf8_general_ci.搜索仍然区分大小写.我一直在做一些研究,似乎背后的原因是我的查询中的BOOLEAN模式.有没有办法让它不区分大小写?所以无论我如何用任何灵敏度输入任何单词,它总会在搜索结果中显示出来?
SELECT
s_cost_sheet.partnumber,
s_cost_sheet.description,
s_cost_sheet.price,
s_cost_sheet.notes
FROM s_cost_sheet
WHERE MATCH ( partnumber, description, price, notes )
AGAINST('%".$search."%' IN BOOLEAN MODE) ORDER BY partnumber, description, price, notes ASC";
Run Code Online (Sandbox Code Playgroud)
我已经在phpMyAdmin中测试了搜索,无论字板的类型如何,它都可以工作,它可以是Plate,PLATE,plaTE.一切正常,所以它必须是导致问题的内容.
我正在开发一个使用该-e标志的脚本,如
unless (-e $fileName)
{
...
}
Run Code Online (Sandbox Code Playgroud)
这在OS X上工作正常.或者说,它无法正常工作.我希望它区分大小写.该脚本也在Linux机器上运行,-e检查失败 - 正确! - 因为区分大小写.
我尝试使用替代路径open <FILEHANDLE, '$fileName'),但似乎这也是不区分大小写的.
编辑:感谢下面回答的所有人.我知道HFS +不区分大小写,但我认为我可以以某种方式"强迫"它.我最终通过执行以下操作来强制检查:
opendir my($dh), $dirName or die "Couldn't open dir '$dirName'";
my @refFiles = readdir $dh;
closedir $dh;
foreach $refFile (@refFiles)
{
if ($refFile eq $refFileName)
{
$found = 1;
}
}
Run Code Online (Sandbox Code Playgroud)
着名的口头禅:"它不漂亮,但它有效."
我看到一两个线程在全球范围内讨论区分大小写,但我的问题更具体.
例如,我理解对文本值进行不区分大小写搜索的兴趣.
但是为什么我们会使用不区分大小写的数据库名称,表和列?
这不会导致错误吗?使用数据库的脚本语言都是区分大小写的,因此,例如,如果我们没有为字段使用正确的案例,则无法找到它...
首先,我知道这有点像一匹"死马",但我已经在互联网和SO上找到了一个解决方案而没有找到.不幸的是,这个正确答案可能没有答案.
我在Expressionengine中有一个运行在IIS7上的站点,(不要问),并运行Structure.
内容编辑器存在一个常见问题,即创建或更改条目并希望修改URL.当他们这样做时,他们倾向于使案例敏感性变得疯狂,或者是驼峰案例,或者只是设计他们自己的修改URL的套管方法.
我的第一个问题是营销团队在营销电子邮件等链接中放置了骆驼套装和奇怪的URL.这可以通过捕获和重写.htaccess文件中的URL来解决,例如:
#Make URL's lower case
RewriteEngine On
RewriteMap lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]
Run Code Online (Sandbox Code Playgroud)
这就解决了第1轮的URL问题.
下一期是双重问题. - > FF到了这一点.
折叠1:他们有内部开发,运行IIS .Net应用程序,这些应用程序采用驼峰式格式.这个改变几乎把它们关闭了一个早晨.(哎呀!)
折叠2:他们有贡献者在驼峰案例中修改URL或只是设计他们自己的修改URL的套管方法.
这是我被困的地方.我可以为此提供任何解决方案,还是这种情况下他们需要遵守更严格的标准并让自己更负责任?
感谢您的信息窥视.
我已经完成了一个现代JavaScript练习来创建一个页面,它接受一串单词并以不区分大小写的方式对它们进行排序.这是codepen:http://codepen.io/Mcabrams/full/FvuJg :
// relevant code:
var sorted = words.map(function(value){
return value.toLowerCase();
}).sort();
Run Code Online (Sandbox Code Playgroud)
我想知道如何使用类似的功能sortWords(),但在以不区分大小写的方式排序时,当我返回已排序的单词时,我想保留原始的大小写.
所需功能的示例:
sortWords(["D","b","A","c"]) ======> ["A", "b", "c", "D"]
目前原来的外壳在我的功能中丢失了.
我正在尝试在Windows上为旧项目设置hg repo.我想忽略图像,二进制文件和一些第三方源文件,但是这些文件包含相同模式的不同大小写,例如.jpg和.JPG,abc_sth和ABC_sth.
我了解到hgignore区分大小写,我是否必须在hgignore文件中列出所有不同的案例,或者是否有可以打开的选项以使忽略过滤器不区分大小写?
mercurial tortoisehg case-sensitive case-insensitive hgignore
Model.exists?("lower(email) = ?", params[:email].downcase)
Run Code Online (Sandbox Code Playgroud)
返回错误: ArgumentError (wrong number of arguments (2 for 0..1)):
是否可以使用不exists?区分大小写的匹配?
我们已经实现了Java Lucene搜索引擎4.5,我试图搜索内容,即使字段值不区分大小写(例如,如果我搜索名为"Banglore"的城市,我得到一个结果,但是当我搜索一个名字的城市时"banglore"我得到0结果).
我用来StandardAnalyzer分析数据并WildcardQuery匹配一个Like条件(我试过这里没有成功).
我不知道我哪里出错了.我很感激有关修复此区分大小写问题的任何指导.
public SearchHelper
{
Analyzer analyzer;
Directory index;
public IndexSearcher searcher = null;
public IndexWriter indexWriter = null;
public QueryParser parser = null;
private static int hitsPerPage = 100;
/**
* @param indexFileLocation
* @throws IOException
*/
public SearchHelper(String indexFileLocation) throws IOException
{
// this.analyzer =new StandardAnalyzer();
this.analyzer = new CaseStandardAnalyzer();
// analyzer = new ThaiAnalyzer();
this.index = FSDirectory.open(java.nio.file.Paths.get(indexFileLocation));
}
/**
* @param create
* @return
* @throws IOException …Run Code Online (Sandbox Code Playgroud)