我将尝试复制PostgreSQL排序结果以进行测试目的。
假设您有一个名为temp
的表,其中包含一个单独的列name
,其中包含以下行:
dolores et
dolor nemo
abc
zxc
现在运行以下查询:
SELECT * from temp ORDER BY name ASC
排序结果为:
abc
dolores et
dolor nemo
zxc
然而,在编程语言中,排序的默认实现将返回不同的结果:
abc
dolor nemo
dolores et
zxc
在JavaScript中:
["dolores et", "dolor nemo", 'abc' , 'zxc'].sort()
// returns ["abc", "dolor nemo", "dolores et", "zxc"]
我想知道是否有一种简单的方法可以在JavaScript中复制数据库中排序的结果(我正在使用NodeJS),以便我可以在我的测试中验证它。我相信我在这里缺少了非常简单的东西。任何帮助都将不胜感激。
我可以尝试使用此函数来强制PostgreSQL中的顺序,但我不想这样做。我的目标是复制JavaScript中的默认行为。
["dolores et", "dolor nemo", 'abc' , 'zxc'].sort((a,b) => a.localeCompare(b, 'en-us', {ignorePunctuation: true}))
),我成功地使其工作。那么 PostgreSQL 是否可以不忽略标点符号呢? - saulotoledoCREATE COLLATION
创建自己的PostgreSQL排序规则,我相信您可以构建一个实现此功能的排序规则。但是,您是否尝试在PostgreSQL中使用POSIX
排序规则?也许这正是您想要的(而且您不必处理ICU排序规则)。 - Laurenz Albe