『壹』 sqlserver怎樣讓一列數據根據中文、英文、數字的順序進行排序
select * from table order by column asc 按順序排列
select * from table order by column desc 按倒盯巧困序凱念排寬搜列
『貳』 sqlserver漢字默認排序是什麼方式
默認排序是:Chinese_PRC_CI_AI_WS
延伸閱讀:
排序規則名稱由兩部份構成,前半部份是兆鎮指本排序規則所支持的字元集。如:
拿橋Chinese_PRC_CS_AI_WS
前半部份:指UNICODE字元集,Chinese_PRC_指針對大陸簡體字UNICODE的排序規則。
排序規則的後半部份即後綴 含義:
_BIN 二進制排序
_CI(CS) 是否區分大小寫,CI不區分,CS區分
_AI(AS) 是消猜猛否區分重音,AI不區分,AS區分
_KI(KS) 是否區分假名類型,KI不區分,KS區分
_WI(WS) 是否區分寬度 WI不區分,WS區分
『叄』 sqlserver中有沒有辦法對漢字的欄位排序
--漢字首字母查詢處理用戶定義函數
CREATE FUNCTION f_GetPY(@str nvarchar(4000))
RETURNS nvarchar(4000)
AS
BEGIN
DECLARE @py TABLE(
ch char(1),
hz1 nchar(1) COLLATE Chinese_PRC_CS_AS_KS_WS,
hz2 nchar(1) COLLATE Chinese_PRC_CS_AS_KS_WS)
INSERT @py SELECT 'A',N'吖',N'鏊'
UNION ALL SELECT 'B',N'八',N'簿'
UNION ALL SELECT 'C',N'嚓',N'錯'
UNION ALL SELECT 'D',N'噠',N'跺'
UNION ALL SELECT 'E',N'屙',N'貳'
UNION ALL SELECT 'F',N'發',N'馥'
UNION ALL SELECT 'G',N'旮',N'過'
UNION ALL SELECT 'H',N'鉿',N'蠖'
UNION ALL SELECT 'J',N'丌',N'竣'
UNION ALL SELECT 'K',N'咔',N'廓'
UNION ALL SELECT 'L',N'垃',N'雒'
UNION ALL SELECT 'M',N'媽',N'穆'
UNION ALL SELECT 'N',N'拿',N'糯'
UNION ALL SELECT 'O',N'噢',N'漚'
UNION ALL SELECT 'P',N'趴',N'曝'
UNION ALL SELECT 'Q',N'七',N'群'
UNION ALL SELECT 'R',N'蚺',N'箬'
UNION ALL SELECT 'S',N'仨',N'鎖'
UNION ALL SELECT 'T',N'他',N'籜'
UNION ALL SELECT 'W',N'哇',N'鋈'
UNION ALL SELECT 'X',N'夕',N'蕈'
UNION ALL SELECT 'Y',N'丫',N'蘊'
UNION ALL SELECT 'Z',N'匝',N'做'
DECLARE @i int
SET @i=PATINDEX('%[吖-做]%' COLLATE Chinese_PRC_CS_AS_KS_WS,@str)
WHILE @i>0
SELECT @str=REPLACE(@str,SUBSTRING(@str,@i,1),ch)
,@i=PATINDEX('%[吖-做]%' COLLATE Chinese_PRC_CS_AS_KS_WS,@str)
FROM @py
WHERE SUBSTRING(@str,@i,1) BETWEEN hz1 AND hz2
RETURN(@str)
END
GO
『肆』 怎樣知道SQLServer的排序規則
語句:
select
SERVERPROPERTY('Collation')
--查看默認排序規則
select
SERVERPROPERTY('SqlCharSetName')--查看排序使用字元集名稱
至於sqlserver的字元集個人認為就是windows的字元集。
排序規則還可以通過SSMS中右鍵查看資料庫屬性里的『維護'。
『伍』 sqlserver排序
排序可以是升序的
(ASC),也可以是降序的
(DESC)。如果未指定是升序還是降序,就假定為
ASC。
下面的查詢返回按
ProctID
升序排序的結果:
代碼如下
復制代碼
USE
AdventureWorks2008R2;
GO
SELECT
ProctID,
ProctLine,
ProctModelID
FROM
Proction.Proct
ORDER
BY
ProctID;
如果
ORDER
BY
子句中指定了多個列,則排序是嵌套的。下面的語句先按產品子類別降序排序
Proction.Proct
表中的行,然後在每個產品子類別中按
ListPrice
升序排序這些行。
代碼如下
復制代碼
USE
AdventureWorks2008R2;
GO
SELECT
ProctID,
ProctSubcategoryID,
ListPrice
FROM
Proction.Proct
ORDER
BY
ProctSubcategoryID
DESC,
ListPrice;
問題
同一...排序可以是升序的
(ASC),也可以是降序的
(DESC)。如果未指定是升序還是降序,就假定為
ASC。
下面的查詢返回按
ProctID
升序排序的結果:
代碼如下
復制代碼
USE
AdventureWorks2008R2;
GO
SELECT
ProctID,
ProctLine,
ProctModelID
FROM
Proction.Proct
ORDER
BY
ProctID;
如果
ORDER
BY
子句中指定了多個列,則排序是嵌套的。下面的語句先按產品子類別降序排序
Proction.Proct
表中的行,然後在每個產品子類別中按
ListPrice
升序排序這些行。
代碼如下
復制代碼
USE
AdventureWorks2008R2;
GO
SELECT
ProctID,
ProctSubcategoryID,
ListPrice
FROM
Proction.Proct
ORDER
BY
ProctSubcategoryID
DESC,
ListPrice;
問題
同一個查詢的結果集為什麽有時候是按他想要的順序排列,有時候又不是,或者是在SQL2000里是這個順序,到了SQL2005/2008又是那個順序?
其實,只要語句里沒有指定「order
by」,SQLSERVER並不會按照順序返回的。有可能你的表裡有一個欄位已經建立了索引
你想結果集按照那個建立了索引的欄位排序,那麼你不指定「order
by」是沒有問題的,因為表的存儲順序就是按照那個欄位
的順序排好序了,所以可以不指定「order
by」,但是如果你沒有在想排序的那個欄位建立索引,或者在SQL2000里建立了
索引,而在SQL2005/2008里沒有建立索引,那麼就要明確地用「order
by」指定。如果你沒有指定,哪怕一模一樣的查詢,
結果集順序這一次和上一次不一樣是很正常的。
『陸』 sqlserver 漢字默認排序是什麼方式
請問怎如埋含么更液差改排序規則呢
1.sp_helpsort
SELECT SERVERPROPERTY ('Collation')
查看你的排序規則.
不過你渣笑的這個應該和字元集有關.
2.更改伺服器排序規則
更改 SQL Server 2005 實例的默認排序規則的操作可能會比較復雜,包括以下步驟:
確保具有重新創建用戶資料庫及這些資料庫中的所有對象所需的全部信息或腳本。
使用工具(例如大容量復制)導出所有數據。
刪除所有用戶資料庫。
重新生成在 setup 命令的 SQLCOLLATION 屬性中指定新的排序規則的 master 資料庫。例如:
復制代碼
start /wait setup.exe /qb INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=test SQLCOLLATION=SQL_Latin1_General_CP1_CI_AI
有關重新生成 master 資料庫的詳細信息,請參閱如何重新生成 SQL Server 2005 的 Master 資料庫。
創建所有資料庫及這些資料庫中的所有對象。
導入所有數據。
注意:
可以為創建的每個新資料庫指定默認排序規則,而不更改 SQL Server 2005 實例的默認排序規則。
『柒』 sqlserver 排序規則的問題
alter table [表名] alter column [列名] [類型] COLLATE Chinese_PRC_CI_AS
[類型] 最好選用 nvarchar,nchar
存儲數據時如果出現亂碼,可能情況如下:
1.提交到資料庫的字元是亂碼
2. 資料庫排序規則不支持該字元集
3.資料庫表欄位的類型設計不合適,最好選用nvarchar,nchar
4.插入字元串時強制存儲格式 insert into [表名] ([欄位1]) values(N'字元串'),最好在字元串前指定 N