我应该以大写还是小写的形式存储数据库中的所有文本?

时间:2008-11-14 19:50:50

标签: database

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

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

6 个答案:

答案 0 :(得分:12)

以原件存放,除非有理由不这样做。用于大写或小写数据的时间可能非常小,而且您永远不知道将来何时想要真实的原始数据。

答案 1 :(得分:5)

这显然取决于您以后需要对数据做些什么。

但是如果你因为你对以后加速查找感兴趣(例如按名称,城市等搜索)而感兴趣,你可能想要创建不同的索引,以便将它们用于查找:

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%'; 

答案 2 :(得分:3)

  1. 在没有迫切需要的情况下 要改变你的数据,不要 改变你的数据。
  2. 没有 有一个令人信服的理由让你的 数据库索引区分大小写,使用 数据库中不区分大小写。
  3. 花时间担心用户看到和想要的内容。这将引导您回答。

答案 3 :(得分:3)

存储用户输入的实际案例。

作为一个用户,如果我喜欢我的名字作为cHriS,我就这样输入,我喜欢这样。 我不喜欢应用程序仅仅因某些技术原因而改变它

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

答案 4 :(得分:1)

我不担心它,只需格式化它就可以在输出中使用它。

答案 5 :(得分:1)

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