如何使oracle和sqlserver按相同的顺序排序?

vbopmzt1  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(407)

我需要将oracle模式的表计数与sql server数据库进行比较。但是,当我进行查询时,结果总是关闭的,这是因为每个查询都处理下划线(“u1”)的顺序。我在下面列举了一个例子。
在oracle中:

SELECT FIELD1 FROM ORACLE_ORDER ORDER BY FIELD1 ASC;

Result:
'ABC'
'ABCD'
'ABC_D'

在sql server中:

SELECT FIELD1 FROM SQL_ORDER ORDER BY FIELD1 ASC;

Result:
'ABC'
'ABC_D'
'ABCD'

从上面可以看出,oracle和sql server在排序时对下划线的处理方式都不同。如何修改其中一个查询(或环境)使其顺序与另一个相同?

nfs0ujit

nfs0ujit1#

在SQLServer端使用以下命令

Select * from SQL_ORDER  
ORDER BY FIELD1  Collate SQL_Latin1_General_CP850_BIN

排序规则sql\u latin1\u general\u cp850\u bin使其与ascii值一起使用。在本例中,下划线的ascii值为95,a为65,z为90。请记住,小写字母“a”的值将高于大写字母“a”,以此类推。
这是小提琴

bnlyeluc

bnlyeluc2#

简单的方法是使用 Collate SQL_Latin1_General_CP850_BIN 中的函数 ORDER BY 为了达到这个目的

SELECT * FROM (
SELECT 'ABC' AS TAB UNION
SELECT'ABC_D'UNION
SELECT'ABCD'UNION
SELECT'ABC_'UNION
SELECT 'ABC' UNION
SELECT'A_C' UNION
SELECT'ABC_DE_FGH'UNION
SELECT'ABCXDEYFGH') AS X 
ORDER BY X.Tab Collate SQL_Latin1_General_CP850_BIN

相关问题