Ⅰ 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,達到匹配。
希望有所幫助。