问题
在 SQL 中,各个字符的排序规则是什么?哪个在前,哪个在后?例如,我想知道下面这些字符在 SQL 中的顺序,怎么办?
0123ABCDabcd!@#$%^&*()-_+=[]{};:'"\|`~,.<>/?
解决方案
思路:在 MySQL 中创建一张表,只存一列数据,格式为 CHAR(1),然后依次插入上面的字符,再用 SELECT ORDER BY 来查看顺序。SQL 语句为:
CREATE TABLE char_test
(
foochar CHAR(1) NOT NULL
);
INSERT INTO char_test(foochar) VALUES('0');
INSERT INTO char_test(foochar) VALUES('1');
INSERT INTO char_test(foochar) VALUES('2');
INSERT INTO char_test(foochar) VALUES('3');
INSERT INTO char_test(foochar) VALUES('A');
INSERT INTO char_test(foochar) VALUES('B');
INSERT INTO char_test(foochar) VALUES('C');
INSERT INTO char_test(foochar) VALUES('D');
INSERT INTO char_test(foochar) VALUES('a');
INSERT INTO char_test(foochar) VALUES('b');
INSERT INTO char_test(foochar) VALUES('c');
INSERT INTO char_test(foochar) VALUES('d');
INSERT INTO char_test(foochar) VALUES('!');
INSERT INTO char_test(foochar) VALUES('@');
INSERT INTO char_test(foochar) VALUES('#');
INSERT INTO char_test(foochar) VALUES('$');
INSERT INTO char_test(foochar) VALUES('%');
INSERT INTO char_test(foochar) VALUES('^');
INSERT INTO char_test(foochar) VALUES('&');
INSERT INTO char_test(foochar) VALUES('*');
INSERT INTO char_test(foochar) VALUES('(');
INSERT INTO char_test(foochar) VALUES(')');
INSERT INTO char_test(foochar) VALUES('-');
INSERT INTO char_test(foochar) VALUES('_');
INSERT INTO char_test(foochar) VALUES('+');
INSERT INTO char_test(foochar) VALUES('=');
INSERT INTO char_test(foochar) VALUES('[');
INSERT INTO char_test(foochar) VALUES(']');
INSERT INTO char_test(foochar) VALUES('{');
INSERT INTO char_test(foochar) VALUES('}');
INSERT INTO char_test(foochar) VALUES(';');
INSERT INTO char_test(foochar) VALUES(':');
INSERT INTO char_test(foochar) VALUES('\'');
INSERT INTO char_test(foochar) VALUES('"');
INSERT INTO char_test(foochar) VALUES('\\');
INSERT INTO char_test(foochar) VALUES('|');
INSERT INTO char_test(foochar) VALUES('`');
INSERT INTO char_test(foochar) VALUES('~');
INSERT INTO char_test(foochar) VALUES(',');
INSERT INTO char_test(foochar) VALUES('.');
INSERT INTO char_test(foochar) VALUES('<');
INSERT INTO char_test(foochar) VALUES('>');
INSERT INTO char_test(foochar) VALUES('/');
INSERT INTO char_test(foochar) VALUES('?');
SELECT foochar FROM char_test ORDER BY foochar;
执行结果如下:
! " # $ % & ' ( ) * + , - . / 0 1 2 3 : ; < = > ? @ a A b B c C d D [ \ ] ^ _ ` { | } ~