您希望在数据库中存储哪一个文本?数据的原始大小,或某种规范化。另外,我应该用触发器强制执行此操作吗?或者我应该使用客户端代码预处理输入数据吗?
我问你,因为我不确定是否有任何差别,除了显示数据的额外处理时间(例如,名称的大小写)。
答案 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)
答案 3 :(得分:3)
存储用户输入的实际案例。
作为一个用户,如果我喜欢我的名字作为cHriS,我就这样输入,我喜欢这样。 我不喜欢应用程序仅仅因某些技术原因而改变它
如果要优化搜索,请使用单独的索引,不要更改数据。
答案 4 :(得分:1)
我不担心它,只需格式化它就可以在输出中使用它。
答案 5 :(得分:1)
如果您需要进行大量的文本字段搜索(strcol =“aBc”),您可以考虑进行规范化。在像postgres这样的db系统中,索引不与ILIKE运算符一起使用,尽管文本搜索特定索引可能更好地处理这个问题。