如何使Oracle“order by”的行为类似于SQLServer?
我正在尝试编写一个Oracle查询,以与MS SQL Server相同的方式对结果进行排序。我在玩弄函数及其参数,但我无法得到与MS SQL Server完全相同的结果 上下文是支持Oracle和MS SQL Server的通用数据收集系统。这是一个相当古老的系统,仍在维护和开发中。没有实体框架或任何最近处理数据库交互的方法 通过在MS SQL Server上执行简单的订购,我得到以下结果: _试验 04-00031-IPE 04-00044-OG 0A-A A0-A SAZ2217 Oracle上的同一查询返回以下结果: 04-00031-IPE 04-00044-OG 0A-A A0-A SAZ2217 _试验 我尝试了许多NLSSORT参数的组合,但没有成功 [编辑] 通过使用“标点符号”NLS_排序参数值,我得到的结果非常接近MS SQL排序,但与包含数字字符序列的子字符串仍然存在差异。以下是一个示例查询结果: 神谕 0031-CASTOR-BLOC1-AV-AP 0031-CASTOR-BLOC1-AV-SP 0031-CASTOR-BLOC1-SV-AP 0031-CASTOR-BLOC1-SV-SP 0031-CASTOR-BLOC10-DV-AP 0031-CASTOR-BLOC10-DV-SP 0031-CASTOR-BLOC2-DV-AP Ms SQL 0031-CASTOR-BLOC10-DV-AP 0031-CASTOR-BLOC10-DV-SP 0031-CASTOR-BLOC1-AV-AP 0031-CASTOR-BLOC1-AV-SP 0031-CASTOR-BLOC1-SV-AP 0031-CASTOR-BLOC1-SV-SP 0031-CASTOR-BLOC2-DV-AP如何使Oracle“order by”的行为类似于SQLServer?,oracle,sorting,Oracle,Sorting,我正在尝试编写一个Oracle查询,以与MS SQL Server相同的方式对结果进行排序。我在玩弄函数及其参数,但我无法得到与MS SQL Server完全相同的结果 上下文是支持Oracle和MS SQL Server的通用数据收集系统。这是一个相当古老的系统,仍在维护和开发中。没有实体框架或任何最近处理数据库交互的方法 通过在MS SQL Server上执行简单的订购,我得到以下结果: _试验 04-00031-IPE 04-00044-OG 0A-A A0-A SAZ2217 Oracl
谢谢你的帮助 我终于找到了这个解决方案:
ORDER BY NLSSORT(COLUMN_NAME, 'NLS_SORT = FRENCH_M')
至少在我的特定上下文中,我在MS SQL Server默认排序和Oracle下得到相同的排序
以下是两个有用的链接:
可以考虑使用RPAD函数吗?
e、 g 选择名称、rpadupperreplacetranslatename、“'、“+”、“-”、15、“0”作为v1 从排序测试命令 rpadupperreplacetranslatename、''u'、'+'、'-'、15、'0'到目前为止,您指定了哪些参数?看起来它使用的是ascii码。可能改成英语会有帮助。我想DBA可能已经禁用了英语。如果我使用:ORDER BY NLSSORTRESULTATS_DERNIER_MES.UNE_CODE_IDENT,'NLS_SORT=FRENCH'Oracle处理它,尽管我得到了错误的排序,但是如果我使用:ORDER BY NLSSORTRESULTATS_DERNIER_MES.UNE_CODE_IDENT,'NLS_SORT=ENGLISH'我会得到一个Oracle错误ora-12702。我也试过“NLS_SORT=BINARY-NLS_COMP=language”对不起,dups英语似乎被DBA禁用了,我猜。如果我使用:ORDER BY NLSSORTRESULTATS_DERNIER_MES.UNE_CODE_IDENT,'NLS_SORT=FRENCH'Oracle处理它,尽管我得到了错误的排序,但是如果我使用:ORDER BY NLSSORTRESULTATS_DERNIER_MES.UNE_CODE_IDENT,'NLS_SORT=ENGLISH'我会得到一个Oracle错误ora-12702。我也试过“NLS_SORT=二进制NLS_COMP=语言”NLS_SORT=二进制NLS_COMP=ANSI“NLS_LANGUAGE=美国”+人工智能和CI变体。你可以试试标点符号,或者西欧。我还需要完成更多的测试,但虚拟化看起来很有希望,非常感谢!另一种方法是不要尝试让Oracle和SQLServer以相同的方式排序。。。i、 e.改变算法或方法。。i、 .e创建键值的前期数组。。。或对每个Oracle源行执行SQLserver查找。。。反之亦然。。。。。等