gpt4 book ai didi

oracle - 10g 在前面包含数字时对 varchar 列进行排序

转载 作者:行者123 更新时间:2023-12-04 17:04:46 26 4
gpt4 key购买 nike

我有一个 Oracle 10g DB 并且有一个 VARCHAR2(2000 个字符)列,让它命名为 TEST,它可以在前面包含数字,例如:

test
1test
3test

当我调用“... order by TEST asc”或简称为“... order by TEST”时

我得到的结果如下
test
1test
3test

但我想得到这样排序的结果:
1test
3test
test

所以先编号插入,有没有办法实现这个?

最佳答案

你是什​​么NLS_SORT设置? ( select sys_context('USERENV', 'NLS_SORT') from dual )。如果是BINARY那么排序顺序是基于每个字符的数值,所以它依赖于数据库字符集。如果它是别的东西,那么你可能想要覆盖它。

您可以通过修改该参数来更改数据库或 session 级别的排序顺序,但您也可以为单个查询更改它:

order by nlssort(test,'NLS_SORT=BINARY')

根据您的字符集,您可能需要尝试不同的值而不是 BINARY .您可以使用 select value from v$nls_valid_values where parameter = 'SORT' 获取所有有效值的列表。 .但请注意 NLS_SORT 文档中提到的潜在性能影响。
nlssort()功能已记录 here .

关于oracle - 10g 在前面包含数字时对 varchar 列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5257867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com