我有一个带有“标题”字段的表,该字段是varchar2,我想选择所有行,然后按通常的顺序先按数字然后按字母对它们进行排序。
例如,我目前ORDER BY title最后使用一个简单的代码:
ORDER BY title
但是我想要这个:
奇怪的是,SQL Developer显示“正确”的顺序,以数字开头。但是在我的应用程序(使用OCI8的PHP)上,它最后显示数字。
不是Oracle专家,但您应该能够做到这一点而无需更改会话
SELECT * FROM my_data SORT by NLSSORT(title,鈥橬LS_SORT=BINARY_AI鈥�)
您可以在其中更改NLS_SORT=以适合您的需求(这是值列表)
NLS_SORT=
请记住,文档说这将强制进行表扫描,因此首先过滤它们可能会有所帮助(但是如果您选择所有表扫描,无论如何您将要使用它们)。
SQL Developer表现出不同行为的原因可能是因为它更改了会话。