我在Debian上运行了Postgres 9.4.4,并且得到以下ORDER BY行为: veure_test=# show LC_COLLATE; lc_collate ------------- en_US.UTF-8 (1 row) veure_test=# SELECT regexp_split_to_table('D d a A c b CD Capacitor', ' ') ORDER BY 1; regexp_split_to_table ----------------------- a A b c Capacitor CD d D (8 rows) 和uname -a: Linux ---- 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1 x86_64 GNU/Linux 但是,在使用Postgres …
我正在设计一个数据库,该数据库将以不同的语言存储数据(使用UTF-8),所以我认为显示查询结果的最佳方法是在查询过程中根据用户的语言对其进行排序(因为不止一种正确的方法),如下所示: SELECT a < b COLLATE "de_DE" FROM test1; 假设这是处理国际数据的正确方法,这是数据库本身的最佳整理方法?PostgreSQL文档说: C和POSIX归类均指定“传统C”行为,其中仅将ASCII字母“ A”至“ Z”视为字母,并且严格按字符代码字节值进行排序。 我认为这是这种情况下的最佳选择,还是我错了? (奖金问题:在查询本身中选择排序规则是否太慢?)。
SQL Server中的默认排序规则类型允许对不区分大小写的字符串建立索引,但数据的大小写仍然保留。这实际上如何工作?我正在寻找实际的基本要点,位和字节或详细解释它的好资源。 create table casetest (fruitnames nvarchar(50) not null); create unique index IX_fruitnames on casetest(fruitnames); insert into casetest values ('apples'); insert into casetest values ('Pears'); -- this insert fails insert into casetest values ('pears'); -- this yields 'Pears' as a result select * from casetest (forceseek) where fruitnames = 'PEARS' …
给定此表: CREATE TABLE test ( id INT NOT NULL, description NVARCHAR(100) COLLATE Modern_Spanish_CI_AS NOT NULL ); INSERT INTO test (id, description) VALUES (1, 'CO2'); 我意识到我无法解决印刷问题: SELECT * FROM test WHERE id = 1; UPDATE test SET description = 'CO₂' WHERE id = 1; SELECT * FROM test WHERE id = …
今天,《七周》中的七个数据库向我介绍了每个操作员的索引。 您可以通过创建text_pattern_ops运算符类别索引来为模式与先前查询匹配的字符串建立索引,只要这些值以小写形式索引即可。 CREATE INDEX moves_title_pattern ON movies ( (lower(title) text_pattern_ops); 我们使用了,text_pattern_ops因为标题是文本类型。如果需要指数VARCHAR处理,字符,或名称,使用相关的OPS: ,varchar_pattern_ops,bpchar_pattern_ops和name_pattern_ops。 我发现该示例确实令人困惑。为什么这样做有用? 如果列是文本类型,在用作搜索值之前,是否会将其他类型(varchar,char,name)强制转换为文本? 该索引的行为与使用默认运算符的索引有何不同? CREATE INDEX moves_title_pattern ON movies (lower(title));