sql - 结果类似于 SQL Server 2016 中的 Oracle 查询

标签 sql sql-server oracle sql-order-by

例如在 Oracle 中

create table test1(Prod_Name varchar2(30))
insert into test1 values('CHANNEL')
insert into test1 values('SHELL')
insert into test1 values('_DISTRIBUTOR BELT')
select * from test1 order by prod_name asc

选择查询给出以下结果

Prod_Name
CHANNEL
SHELL
_DISTRIBUTOR BELT

但在 SQL Server 中它给出以下结果

Prod_Name
_DISTRIBUTOR BELT
CHANNEL
SHELL

我希望结果与SQL Server中的Oracle相同,那么如何编写查询。为了澄清,我希望 CHANNEL、SHELL 和 _DISTRIBUTOR BELT 行位于最后

最佳答案

在 SQL Server 中,您可以在使用 COLLATE 时强制进行排序规则。尝试下面的脚本,您应该可以通过这种方式获得预期的输出。

DEMO HERE

SELECT * 
FROM test1 
ORDER BY prod_name 
    COLLATE SQL_Latin1_General_CP850_BIN2

关于sql - 结果类似于 SQL Server 2016 中的 Oracle 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59837437/

相关文章:

sql - 新手问题 : Problem with results, sql, join, where, "<"操作符

mysql - oracle查询从表中获取最后4条记录

mysql - SQL "Table_Name.Column_name"VS "Column_name"性能和语法

java - Hibernate:Criteria 和 createSQLQuery:如何获取正确的 JSON?

c# - 连接数据库中的 Crystal Reports

sql - 在 SQL Server 2005 中生成多个 SQL 任务

oracle - 在INSERT ... SELECT之后在Oracle上获取插入的ID

SQL Server 2008 兼容级别

php - 如何通过 Internet 将数据更新远程发送到托管的 MySQL 数据库?

java - 无法使用 jTDS 连接到 SQL Server