Ⅰ sql 语句复杂排序查询问题
order by 可以跟case语句,你用case语句把规则写出来就行,比如:
order by (case when column3 is null then (column2+3) else column3 end)
请根实际体情况和排序规则改写…
Ⅱ 如何更改SQL排序规则
将排序规则由默认的SQL_Latin1_General_CP1_CI_AS修改为Chinese_PRC_CI_AS
解决办法:
1、登录服务器打开Microsoft SQL Server Management Studio。
2、在要修改的数据库上单击鼠标右键,并选择“属性”。
3、在弹出的数据库属性窗口中点击“选择页”中的“选项”。
4、将排序规则由默认的SQL_Latin1_General_CP1_CI_AS修改为Chinese_PRC_CI_AS。
5、点击确定就OK。
对于应经是乱码的,估计是没有作用了。
Ⅲ sql语句复杂排序问题,在线请高手解答
CREATETABLE#temp(
TYPE char(1),
INDINAME INT,
INDIVALUEINT
);
INSERTINTO#tempVALUES('A',1001,6);
INSERTINTO#tempVALUES('A',1001,2);
INSERTINTO#tempVALUES('A',1002,3);
INSERTINTO#tempVALUES('A',1003,5);
INSERTINTO#tempVALUES('B',1001,1);
INSERTINTO#tempVALUES('B',1002,4);
INSERTINTO#tempVALUES('B',1002,3);
INSERTINTO#tempVALUES('B',1003,6);
INSERTINTO#tempVALUES('C',1001,4);
INSERTINTO#tempVALUES('C',1002,6);
INSERTINTO#tempVALUES('C',1003,2);
GOSELECT
temp.TYPE,
temp.INDINAME,
MAX(temp.INDIVALUE)ASINDIVALUE
FROM
#temptemp
JOIN
(
SELECT
t.TYPE,
ROW_NUMBER()OVER(ORDERBYMAX(INDIVALUE)DESC)ASxNo
FROM
#tempt
WHERE
t.INDINAME=1001
GROUPBY
t.TYPE
)SubQuery1001
ON(temp.TYPE=SubQuery1001.TYPE)
GROUPBY
SubQuery1001.xNO,
temp.TYPE,
temp.INDINAME
ORDERBY
SubQuery1001.xNO,
temp.INDINAME
GO
TYPEINDINAMEINDIVALUE
--------------------------
A10016
A10023
A10035
C10014
C10026
C10032
B10011
B10024
B10036
(9行受影响)
SELECT
temp.TYPE,
temp.INDINAME,
MAX(temp.INDIVALUE)ASINDIVALUE
FROM
#temptemp
JOIN
(
SELECT
t.TYPE,
ROW_NUMBER()OVER(ORDERBYMAX(INDIVALUE)DESC)ASxNo
FROM
#tempt
WHERE
t.INDINAME=1003
GROUPBY
t.TYPE
)SubQuery1001
ON(temp.TYPE=SubQuery1001.TYPE)
GROUPBY
SubQuery1001.xNO,
temp.TYPE,
temp.INDINAME
ORDERBY
SubQuery1001.xNO,
temp.INDINAME
GO
TYPEINDINAMEINDIVALUE
--------------------------
B10011
B10024
B10036
A10016
A10023
A10035
C10014
C10026
C10032
(9行受影响)
Ⅳ sql server 复杂排序
sql="selete * form biao order by case when a is null then 1 else 0 end,b desc"
set rs=conn.execute (sql)
Oracle认为null为无穷大,所以不会有什么问题
SQL认为null为无穷小,所以升序会在前面
你这样来试试,其实上面语句也不是你要的效果
比如字段a惹是有值,但有重复时,B字段就会按倒序排列
Ⅳ SQl 中的排序规则什么意思
什么叫排序规则呢?MS是这样描述的:"在 Microsoft SQL Server 中,
字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存
储和比较字符所使用的规则。"
在查询分析器内执行下面语句,可以得到SQLSERVER支持的所有排序规则。
select * from ::fn_helpcollations()
排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。
如:
Chinese_PRC_CS_AI_WS
前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则,按拼音排序。
Chinese_PRC_Stroke 表示按汉字笔画排序;
排序规则的后半部份即后缀 含义:
_BIN 二进制排序
_CI(CS) 是否区分大小写,CI不区分,CS区分(case-insensitive/case-sensitive)
_AI(AS) 是否区分重音,AI不区分,AS区分(accent-insensitive/accent-sensitive)
_KI(KS) 是否区分假名类型,KI不区分,KS区分(kanatype-insensitive/kanatype-sensitive)
_WI(WS) 是否区分宽度 WI不区分,WS区分(width-insensitive/width-sensitive)
区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,
比较还将重音不同的字母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。
区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项。
Ⅵ 怎样修改sqlserver2005系统数据库排序规则
首先要知道数据库排序规则的含义,如Chinese_PRC_CI_AS就可以不区分大小写了,下面为Chinese_PRC打头的规则:
_BIN
二进制排序
_CI_AI
不区分大小写、不区分重音、不区分假名类型、不区分全半角
_CI_AI_WS
不区分大小写、不区分重音、不区分假名类型、区分全半角
_CI_AI_KS
不区分大小写、不区分重音、区分假名类型、不区分全半角
_CI_AI_KS_WS
不区分大小写、不区分重音、区分假名类型、区分全半角
_CI_AS
不区分大小写、区分重音、不区分假名类型、不区分全半角
_CI_AS_WS
不区分大小写、区分重音、不区分假名类型、区分全半角
_CI_AS_KS
不区分大小写、区分重音、区分假名类型、不区分全半角
_CI_AS_KS_WS
不区分大小写、区分重音、区分假名类型、区分全半角
_CS_AI
区分大小写、不区分重音、不区分假名类型、不区分全半角
_CS_AI_WS
区分大小写、不区分重音、不区分假名类型、区分全半角
_CS_AI_KS
区分大小写、不区分重音、区分假名类型、不区分全半角
_CS_AI_KS_WS
区分大小写、不区分重音、区分假名类型、区分全半角
_CS_AS
区分大小写、区分重音、不区分假名类型、不区分全半角
_CS_AS_WS
区分大小写、区分重音、不区分假名类型、区分全半角
_CS_AS_KS
区分大小写、区分重音、区分假名类型、不区分全半角
_CS_AS_KS_WS
区分大小写、区分重音、区分假名类型、区分全半角
如需要对数据库重新进行规则设定,具体步骤如下:
1、找到sql2005 的安装包
2、执行下面的批处理,指定某种规则,如Chinese_PRC_CI_AS
内容如下:
cd D:\SQL Server 2005\SQL Server x86\Servers
start /wait setup.exe /qb INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=sa SQLCOLLATION=Chinese_PRC_CI_AS
3、重新附加一下数据库就发现排序规则变更了。
Ⅶ 软件开发:SQL脚本实现比较复杂的排序
转,仅供参考
SELECT * FROM t3 ORDER BY
CAST (LEFT(name,patindex('%[a-z,A-Z]%',right(name,len(name)-patindex('%[0-9]%',name)))) AS INT) ,
SUBSTRING(NAME,patindex('%[a-z,A-Z]%',right(name,len(name)-patindex('%[0-9]%',name)+1)),1 ) ,
CAST(RIGHT(name,len(name) - patindex('%[a-z,A-Z]%',right(name,len(name)-patindex('%[0-9]%',name)+1))) AS INT )
Ⅷ 复杂sql排序
你好,很高兴回答你的问题。
你的问题可以通过类似下面的sql完成。
select * from 表 order by cnt desc,createtime desc。
如果有帮助到你,请点击采纳。
Ⅸ SQL如何按abcabc规律排序
建议这种逻辑不要在底层的SQL中处理,交给上层层或者service层处理。
方法一:如果是已经存在的数据不需要更新与插入的话,建议使用TBSchele定时刷。
方法二:如果是需要将插入的数据排序时,可以根据你所说的ABC的字段进行生成特定的ID进行排序。更新时用事务批量更新最近插入的不重复数据的ID,达到匹配。
希望有所帮助。