sim*_*onC 5 oracle sql-order-by varchar2
我有一个Oracle 10g数据库并且有一个VARCHAR2(2000字符)列,可以命名为TEST,它可以包含前面的数字,例如:
test
1test
3test
Run Code Online (Sandbox Code Playgroud)
当我打电话给"...由TEST asc订购"或简称"......由TEST订购"时
我得到的结果如下
test
1test
3test
Run Code Online (Sandbox Code Playgroud)
但是我希望得到这样的结果:
1test
3test
test
Run Code Online (Sandbox Code Playgroud)
所以首先编号插入,有没有一种方法来实现这一目标?
您的NLS_SORT设置为什么?(select sys_context('USERENV', 'NLS_SORT') from dual
).如果是,BINARY
则排序顺序基于每个字符的数值,因此它取决于数据库字符集.如果它是其他东西,那么你可能想要覆盖它.
您可以通过修改该参数来更改数据库或会话级别的排序顺序,但您也可以针对单个查询更改它:
order by nlssort(test,'NLS_SORT=BINARY')
Run Code Online (Sandbox Code Playgroud)
根据您的字符集,您可能需要尝试使用不同的值而不是BINARY
.您可以获取所有有效值的列表select value from v$nls_valid_values where parameter = 'SORT'
.但请注意NLS_SORT文档中提到的潜在性能影响.
此nlssort()
功能记录在此处.
归档时间: |
|
查看次数: |
10928 次 |
最近记录: |