【问题标题】:Should I store all the text in my database in uppercase or in lowercase?我应该将数据库中的所有文本以大写还是小写形式存储?
【发布时间】:2010-09-22 09:55:54
【问题描述】:

您更喜欢哪一个在您的数据库中存储文本?数据的原始大小写,或某种规范化。另外,我应该用触发器强制执行吗?还是应该使用客户端代码预处理输入数据?

我问你,因为我不确定是否有任何区别,除了显示数据的额外处理时间(例如名称的大写)。

【问题讨论】:

  • 你知道将人们的名字重新放入“标题大小写”有多难吗?

标签: database


【解决方案1】:

保存在原盒中,除非有其他理由。对数据进行大写或小写所花费的时间可能非常少,而且您永远不知道将来何时需要返回真实的原始数据。

【讨论】:

    【解决方案2】:

    这显然取决于您以后需要如何处理数据。

    但是,如果您询问是因为您有兴趣在以后加快查找速度(例如按名称、城市等搜索),您可能希望创建不同的索引,以便将这些索引用于查找:

    create table case_test (
      id integer,
      name varchar2(30));
    
    create index ucasename on case_test(upper(name));
    

    类似这个示例的查询将使用不区分大小写的索引作为选择条件,但最初返回带有大小写的名称作为输入:

    select * from case_test where upper(name) like 'TUCK%'; 
    

    【讨论】:

      【解决方案3】:

      以用户输入的实际情况存储。

      作为用户,如果我喜欢我的名字 cHriS,我会以这种方式输入,我也喜欢这种方式。 我不喜欢应用程序更改它只是出于某些技术原因

      如果要优化搜索,请使用单独的索引,不要更改数据。

      【讨论】:

        【解决方案4】:
        1. 在没有迫切需要的情况下 要更改您的数据,请不要 更改您的数据。
        2. 在没有 一个令人信服的理由 数据库索引区分大小写,使用 在您的数据库中不区分大小写。
        3. 花时间担心用户看到和想要什么。这将引导您找到答案。

        【讨论】:

          【解决方案5】:

          我不会担心它,只需将其格式化为您需要的输出格式。

          【讨论】:

            【解决方案6】:

            如果您需要进行大量文本字段搜索 (strcol = "aBc"),您可以考虑规范化。在某些数据库系统(如 postgres)中,索引不与 ILIKE 运算符一起使用,尽管文本搜索特定索引可能会更好地处理这个问题。

            【讨论】:

              猜你喜欢
              • 2012-01-15
              • 1970-01-01
              • 2011-04-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-06-08
              • 1970-01-01
              相关资源
              最近更新 更多