背景:今天又是元气满满的一天
在开(KU)心(BI)地写SQL的时候发现了个让我好奇心大发的事儿:
SQL的排序最低级的究竟是什么?
实验代码:
IF OBJECT_ID('tempdb..#OrderByTest') IS NOT NULL
BEGIN
DROP TABLE #OrderByTest;
END;
CREATE TABLE #OrderByTest(testcoum VARCHAR(10))
INSERT INTO #OrderByTest( testcoum )VALUES ( '!' )
INSERT INTO #OrderByTest( testcoum )VALUES ( '' )
INSERT INTO #OrderByTest( testcoum )VALUES ( ' ' )
INSERT INTO #OrderByTest( testcoum )VALUES ( NULL)
INSERT INTO #OrderByTest( testcoum )VALUES ( 'Z' )
INSERT INTO #OrderByTest( testcoum )VALUES ( '@' )
INSERT INTO #OrderByTest( testcoum )VALUES ('重' )
INSERT INTO #OrderByTest( testcoum )VALUES ('重重')
INSERT INTO #OrderByTest( testcoum )VALUES ( '^')
INSERT INTO #OrderByTest( testcoum )VALUES ( '9' )
INSERT INTO #OrderByTest( testcoum )VALUES ('z' )
INSERT INTO #OrderByTest( testcoum )VALUES ( '_')
INSERT INTO #OrderByTest( testcoum )VALUES ('~')
INSERT INTO #OrderByTest( testcoum )VALUES ( '最' )
INSERT INTO #OrderByTest( testcoum )VALUES ( '做' )
INSERT INTO #OrderByTest( testcoum )VALUES ( '龘' )
按笔画排序:
SELECT *
FROM #OrderByTest
ORDER BY testcoum COLLATE Chinese_PRC_Stroke_CS_AS_KS_WS;
查询结果:
结论:
由结果可见,按笔画排序最高级的排序为 NULL ,最低级为 笔画数64的 龘 字(目前电脑能打出来 笔画最多的汉字 拼音与’达‘同音 龙腾飞的样子);
按笔画排序原理:只取第一个字做对比,当彼此第一个字笔画相同时取第二个字笔画做对比,以此类推;
按拼音排序原理:取该字拼音第一个拼音字母做对比,当彼此第一个拼音字母相同时取第二个拼音字母, 若第一个字的拼音字母都相同时则取第二个字,以此类推