gpt4 book ai didi

sql-server - 关于 SQL Server 中重音不敏感的问题 (Latin1_General_CI_AS)

转载 作者:行者123 更新时间:2023-12-03 07:57:43 26 4
gpt4 key购买 nike

我们所有的数据库都是使用默认排序规则 ( Latin1_General_CI_AS ) 安装的。

我们计划更改排序规则,以允许客户在不区分重音的情况下搜索数据库。

问题:

  • 拥有不区分口音的数据库有哪些负面影响(如果有)?
  • 对口音不敏感的数据库是否有任何性能开销?
  • 为什么 SQL Server 归类的默认值是区分重音的;为什么有人想要默认区分重音?
  • 最佳答案

    说真的,更改数据库排序规则是一种痛苦。从 codeproject 看这个 HOWTO,然后在做之前仔细考虑!这是最简单的方法!

  • http://www.codeproject.com/Articles/302405/The-Easy-way-of-changing-Collation-of-all-Database

  • 首先,您可以简单地通过将其指定为搜索的一部分来允许对重音不敏感的数据库进行搜索,您不必更改排序规则。
     select * from TableName
    where name collate Latin1_General_CI_AI like @parameter

    简单如。但是,这会损害索引。

    另一种方法是提供一个可以单独索引的计算字段。
        create table TableName(
    ix int identity primary key,
    name nvarchar(20) collate latin1_general_ci_as
    )
    go
    alter table TableName
    add name_AI as name collate latin1_general_CI_AI
    go
    create index IX_TableName_name_AI
    on dbo.TableName(name_AI)

    上面的示例将它放在表中,但您也可以创建一个索引 View 。
        create view dbo.TableName_AI
    with schemabinding
    as
    select ix,
    name collate Latin1_general_CI_AI as name
    from dbo.TableName
    go
    -- Need a unique clustered index first
    create unique clustered index IX_TableName_AI_Clustered on dbo.TableName_AI(ix)
    -- then the index for searching
    create index IX_TableName_AI_name on dbo.TableName_AI(name)

    然后,对于不区分重音的搜索,使用 View TableName_AI .

    要回答您的具体问题:
  • 在不区分重音的数据库中,区分重音的搜索会比较慢。
  • 是的,但并非如此您会注意到
  • 就是这样。某些东西必须是默认值:如果您不喜欢它,请不要使用默认值!

    可以这样想:“Hard”和“Herd”不是同一个词。一个元音差异就足够了——即使它们听起来很相似。

    重音差异(a vs. á)介于大小写差异(A vs. a)和字母差异(a​​ vs. e)之间。你必须在某处画线。

    口音会影响单词的发音,并可以使其具有不同的含义,尽管我很难想出例子。我想对于那些在他们的数据库中有使用口音的语言的单词的人来说,这更有意义。
  • 关于sql-server - 关于 SQL Server 中重音不敏感的问题 (Latin1_General_CI_AS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14525981/

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