标签: case-insensitive

任何人都成功使用PostgreSQL数据库的特定区域设置,以便文本比较不区分大小写?

我正在使用PostgreSQL 8.4在OS X上的Rails中开发一个应用程序.我需要为应用程序设置数据库,以便标准文本查询不区分大小写.例如:

SELECT*FROM documents WHERE title ='令人难以置信的文件'

应该返回相同的结果:

SELECT*FROM documents WHERE title ='Incredible Document'

为了清楚起见,我不想使用:

(1)LIKE在where子句或任何其他类型的特殊比较运算符中

(2)列数据类型或任何其他特殊列索引的citext

(3)任何类型的全文软件,如Sphinx

我想要的是设置数据库区域设置以支持不区分大小写的文本比较.我在Mac OS X(10.5 Leopard)上并且已经尝试将编码设置为"LATIN1",Collat​​ion和Ctype都设置为"en_US.ISO8859-1".到目前为止没有成功.

非常感谢任何帮助或建议.

谢谢!

更新

我已经标出了一个答案,作为正确答案,尊重那些回答的人.但是,我选择以不同于建议的方式解决这个问题.在进一步审查应用程序之后,只有少数几个实例需要对数据库字段进行不区分大小写的比较,因此我将为需要进行不区分大小写的比较创建影子数据库字段.例如,name和name_lower.我相信我在某个地方遇到了这个解决方案.希望PostgreSQL允许类似的SQL Server在未来提供的排序选项(即DOCI).

特别感谢所有回复的人.

postgresql macos locale case-sensitive case-insensitive

5
推荐指数
1
解决办法
1249
查看次数

F#区分大小写吗?

我在这里和网上搜索但没有回答.

我问的原因是,由于F#约定似乎他们喜欢非大写字母,使用带有Pascal约定的BCL类型在F#中看起来很奇怪,如:

let stringD = String.Join(" ",[| stringA; stringB |])
Run Code Online (Sandbox Code Playgroud)

看起来它更符合F#的精神:

let stringD = string.join(" ",[| stringA; stringB |])
Run Code Online (Sandbox Code Playgroud)

f# case-sensitive case-insensitive

5
推荐指数
1
解决办法
567
查看次数

.emacs中区分大小写的setq无效

我的.emacs文件中有很多自定义内容:字体,颜色,窗口大小,键绑定等等.所有这些都有效.

然后在最后,我刚刚添加了:(setq case-fold-search nil).这是一个变量,当设置nil为应该在所有emacs模式下使搜索区分大小写时.它不适合我.

在单个缓冲区中设置case-fold-searchnil有效,但是当我将其设置为时.emacs,它不起作用.是否有理由为什么a中的setq声明.emacs有时可能不起作用?我该如何尝试调试此问题?

variables emacs case-sensitive dot-emacs case-insensitive

5
推荐指数
1
解决办法
507
查看次数

如何在c#中构建不区分大小写的强类型LINQ查询?

我尝试为IQuerable构建扩展方法,如下所示:

public static IQueryable<T> FilterByString<T>(this IQueryable<T> query, 
  Expression<Func<T, string>> propertySelector, 
  StringOperator operand, 
  string value)
Run Code Online (Sandbox Code Playgroud)

这将概括如下:

query.Where(o => o.Name.ToLower().StartsWith(filterObject.Name.ToLower()))
Run Code Online (Sandbox Code Playgroud)

成:

q.FilterByString(o => o.Name, filterObject.NameOperator, filterObject.Name)
Run Code Online (Sandbox Code Playgroud)

允许设置过滤运算符(即EndsWith,Contains).

我在google上看到了一些区分大小写的解决方案,需要使用属性的名称作为字符串而不是stron类型的propertySelectorExpression.我也看到使用IndexOf()的不敏感的Contains()实现的解决方案,它们似乎不符合我的需要.

现在我有这个,但它不起作用(在"ToLower()"调用上激动):

static MethodInfo miTL = typeof(String).GetMethod("ToLower", System.Type.EmptyTypes);
static MethodInfo miS = typeof(String).GetMethod("StartsWith", new Type[] { typeof(String) });
static MethodInfo miC = typeof(String).GetMethod("Contains", new Type[] { typeof(String) });
static MethodInfo miE = typeof(String).GetMethod("EndsWith", new Type[] { typeof(String) });

public static IQueryable<T> FilterByString<T>(this IQueryable<T> query, 
  Expression<Func<T, string>> propertySelector, 
  StringOperator operand, 
  string value)
{
    Expression constExp = …
Run Code Online (Sandbox Code Playgroud)

c# linq dynamic case-insensitive strong-typing

5
推荐指数
1
解决办法
4451
查看次数

是否可以在SQL中的LIKE语句中执行不区分大小写的搜索?

我用来编写一个select查询,like语句的值是动态的.

  AND       e.rank_request_id = a.request_id
  AND       f.priority_request_id = a.request_id
  AND       b.status_type_id = c.status_id
  AND   b.status_request_id = a.request_id
  AND   a.request_id LIKE '%#form.searchbar#%'
Run Code Online (Sandbox Code Playgroud)

但是只有匹配字符串#form.searchbar#中每个字符的Case时,才会返回结果.

请为此建议一个解决方法,以便它变得不区分大小写.

sql oracle coldfusion case-insensitive

5
推荐指数
1
解决办法
3万
查看次数

Git使用普通名称获取一次分支,并使用大写字母获取一次

我正在寻找远程分支并陷入某种循环.

我取一次然后得到:

$ git fetch
* [new branch]      minorRelease/something-> origin/minorRelease/something
Run Code Online (Sandbox Code Playgroud)

然后我再次获取并得到:

$ git fetch
* [new branch]      minorRelease/Something-> origin/minorRelease/Something
Run Code Online (Sandbox Code Playgroud)

相同的分支但有资本S.

我试图从以下文件夹中删除该文件.git/refs/remotes/origin/minorRelease,但是当再次获取时,我得到两个并返回上面的循环:

$ git fetch
* [new branch]      minorRelease/Something-> origin/minorRelease/Something
* [new branch]      minorRelease/something-> origin/minorRelease/something
Run Code Online (Sandbox Code Playgroud)

git case-insensitive remote-branch git-fetch

5
推荐指数
1
解决办法
3506
查看次数

elasticsearch案例不敏感术语过滤器搜索not_analyzed字段

这里有类似的问题Elasticsearch Map对not_analyzed文件不敏感,但是我的处理方式略有不同,因为我处理的是特殊字符.

大多数人建议keyword analyzer结合使用lowercase filter.但是,这对我的情况不起作用,因为关键字分析器在空格上标记,特殊字符如^, #, etc.这打破了我想要的支持类型.

  1. ^HELLOWORLD应该匹配搜索^helloworld,但不是helloworld
  2. #FooBar应该匹配#foobar但不匹配foobar.
  3. Foo Bar应该匹配foo bar,但不是foobar.

与我们在此处看到的类似功能https://www.elastic.co/guide/en/elasticsearch/guide/current/_finding_exact_values.html#_term_filter_with_numbers,但不区分大小写.

有谁知道如何做到这一点?

编辑1:

似乎我的问题的核心是多字段,因为关键字+小写似乎解决了标题中提出的问题.但是,为多字段值属性提出此问题会更准确.

test_mapping.json:

{
  "properties" : {
    "productID1" : {
      "type" : "string",
      "index_analyzer" :  "keyword_lowercase",
      "search_analyzer" : "keyword_lowercase"
    },
    "productID2" : {
      "type": "multi_field",
      "keyword_edge_ID": {
        "type": "string", 
        "index_analyzer":"keyword_lowercase_edge", 
        "search_analyzer":"keyword_lowercase_edge"
      },
      "productID2": {
        "type": "string", 
        "index": "analyzed", 
        "store": …
Run Code Online (Sandbox Code Playgroud)

case-insensitive elasticsearch

5
推荐指数
1
解决办法
1万
查看次数

MongoDB:如何查找忽略区分大小写,重音和逻辑百分比的文档(%)

我想在我的mongodb数据库中搜索一个集合.在我的收藏中,我有"name"字段的文档可以是以下值:

[i]"PalácioGuanabara","PaláciodaCidade","FestaPalácio"等.

当用户键入"pala"或"palá"或"Pala"或"PalÁ"之类的搜索时,[i]中的所有这些都必须构建结果集.

我发现在MongoDB中我可以在搜索中使用正则表达式,例如:

{ "name": { $regex: new Regex(".*pala.*", "i") } }
Run Code Online (Sandbox Code Playgroud)

好的,这种方法不区分大小写,并使用SQL中的百分比逻辑("%pala%").但是,它不会忽略数据库中寄存器的重音.

我找到了另一个使用$ text索引的替代方法:https://docs.mongodb.org/manual/core/index-text/

这种方法可以忽略区分大小写和重音.但"搜索"不接受正则表达式,因此我无法搜索"%pala%"之类的内容.

总结一下,我想在MongoDB中进行以下SQL查询:

select * from collection where remove_accents(upper(name)) like '%Pala%'
Run Code Online (Sandbox Code Playgroud)

此查询返回的结果名称为"palácio","palacio","PaláCiô"等.

querying case-insensitive mongoose mongodb mongodb-query

5
推荐指数
3
解决办法
8877
查看次数

Java-8:如何使用Map.Entry#comparisonByValue对Map进行排序(基于值)而忽略区分大小写?

我想按字母顺序对值进行排序,忽略区分大小写并返回键列表.

 /**
   * This method will sort allCostPlanDetailsRows based on Value in <Key,Value> pair
   *
   * @param sortingOrder_ whether to sort the LinkedHashMap in Ascending order or Descending order
   * @return List<String> returns List of costPlanDetailsRowId in sorted order
   */
  private List<String> sortCostPlanDetailRows( SortingOrder sortingOrder_ )
  {
    return _allCostPlanDetailRows
      .entrySet()
      .stream()
      .sorted( sortingOrder_ == SortingOrder.DESC ? Map.Entry.<String, String>comparingByValue(Comparator.nullsFirst(Comparator.naturalOrder())).reversed() : Map.Entry.comparingByValue(Comparator.nullsFirst(
          Comparator.naturalOrder())) )
      .map( Map.Entry::getKey )
      .collect( Collectors.toList() );
  }
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

注意:如果我可以改进上面的代码,欢迎提出建议.

java string case-insensitive java-8 java-stream

5
推荐指数
1
解决办法
672
查看次数

有什么方法可以检查预处理器中文件系统是否不区分大小写?

我想在预处理器中检查文件系统是否区分大小写。到目前为止,我一直认为macOS始终具有不区分大小写的路径,但是最近我读到它取决于文件系统。我只需要一种方法来进行此签入#if,因此可以相应地设置数组大小。

c filesystems macos case-insensitive

5
推荐指数
1
解决办法
85
查看次数