加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle 10g在前面包含数字时订购varchar列

发布时间:2020-12-12 13:14:58 所属栏目:百科 来源:网络整理
导读:我有一个Oracle 10g数据库并且有一个VARCHAR2(2000字符)列,可以命名为TEST,它可以包含前面的数字,例如: test1test3test 当我打电话给“…由TEST asc订购”或简称“……由TEST订购”时 我得到的结果如下 test1test3test 但是我希望得到这样的结果: 1test3te
我有一个Oracle 10g数据库并且有一个VARCHAR2(2000字符)列,可以命名为TEST,它可以包含前面的数字,例如:

test
1test
3test

当我打电话给“…由TEST asc订购”或简称“……由TEST订购”时

我得到的结果如下

test
1test
3test

但是我希望得到这样的结果:

1test
3test
test

所以首先编号插入,是否有一种方法来实现这个?

解决方法

你的 NLS_SORT是什么设置的? (从dual中选择sys_context(‘USERENV’,’NLS_SORT’).如果它是BINARY,则排序顺序基于每个字符的数值,因此它取决于数据库字符集.如果它是其他东西,那么你可能想要覆盖它.

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

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

根据您的字符集,您可能需要尝试使用不同的值而不是BINARY.您可以使用v $nls_valid_values中的select值获取所有有效值的列表,其中parameter =’SORT’.但请注意NLS_SORT文档中提到的潜在性能影响.

nlssort()函数记录在here中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读