得分字段为varchar
那么按得分排序得到的结果可能是:
1
10
11
123
1234
2
25
253
3
但是我们想要按照数字排序
1
2
3
10
11
25
123
1234
253

这时候只需要
一种 、
数字字符串为01 0100 02 0200 一排序就是这个顺序,我想要变成01 02 0100 0200 就用下面这个办法
把这个字段转为int 然后再排 序就对了。
ORDER BY CAST(字段名 AS DECIMAL)
另一种
假如你要排序的字段名为 mynum,

如果 mynum 是 int 型,直接排序即可: order by mynum

如果 mynum 是 string 型,但存的是数值,并且要出现你说的自然排序效果的话,要这样做: order by mynum+0
m/benweet/stackedit

最后一种
使用MySQL绝对值函数ABS,它告诉MySQL使用绝对值来处理处理这个字段:
ORDER BY ABS(字段名)

得分字段为varchar 那么按得分排序得到的结果可能是: 1 10 11 123 1234 2 25 253 3 但是我们想要按照数字排序 1 2 3 10 11 25 123 1234 253这时候只需要 一种 、 数字字符串为01 0100 02 0200 一排序就是这个顺序,我想要变成01 02 0100 0200 就用下面这个办法 把这个字段转
需求是这样的: 数据库表里面有一个 字段 是nvachar,存的值是 数字 字符 混合的,要 实现 先按 数字 排序 ,再按字母倒序。思路: 考虑这个 字段 的值是否是有规律可循的,把要按 数字 排序 的部分转换为 数字 ,再把剩下的 字符 排序 。数据表是下面这样的:LevelName就是那个 数字 和字母混合的 字段 。 我这个表里存的LevelName都是 数字 +单个 字符 的格式。于是可以把前面的部分转换为 数字 ,按 数字 排,剩下的部分
因项目需要,需对 字符 数字 进行 排序 SQL 语句: SELECT transactionGmv6Months FROM company WHERE categoryId='127726077' ORDER BY LENGTH(transactionGmv6Months),transactionGmv6Months; 查询结果: 将长度一致的 字符 串先 排序 ,再按照 字符 串的ASCII码 排序
字符 字符 串类 的数据按数值的大小进行 排序 所遇的问题: 当对数据类 为varchar 的数据进行 排序 时, 排序 得到的结 果达不到预期的效果 1,3,6,15,16 排序 得到是: 1,15,16,3,6 ​ 预期的 排序 结果是: 1,3,6,15,16 解决方案: 将 字符 数据转换为number类 在去 排序 即可,一般将 字段 +1或 字段 *1就行。 #原 sql select * from stu_table order by stu_
在做项目的过程中会遇到不同情况的 排序 ,如对某个 字段 根据该 字段 的不同值进行 排序 : 如需要对一张表的status 字段 按照1,0,2的顺序 排序 ,这个时候就不能使用传统的asc进行 排序 了: select * from t where type = 2 order by status asc; 而是要按照该 字段 的值进行 排序 : select * from ttt where type = 2 OR...
用户自己定义动态组织 sql 查询条件,对于用户来说相当方便的啦。可以自由选择查询 字段 、条件条件、条件值,选择与或关系,包括括号优先的使用。根据查询 字段 不同,查询条件值的动态改变,如日期控件、下拉框、可输入的文本框。参考使用的童鞋可以再优化下,使之更人性化。 呵呵。折腾一天弄出来的,个人觉得很实用,不足之处,很自行修改。 童鞋们大力给分啊,大哥也下载东东需要积分啊。 用户使用说明: 1.当条件值是日期时,格式为:2013-01-01; 2.当条件值是 字段 串时,中间含有英文单引号“'”时,请用两个单引号“''”表示,如:AA''A ; 3.当条件为“包含”或“不包含”时,条件值不能是日期格式 ; 4.当条件为“包含”或“不包含”时,条件值是 字符 串类 用单引号“'”引起来,多个数据项时用逗号分隔,如:'AAA','BBB'; 5.当条件为“包含”或“不包含”时,条件值是 数字型 时则不需要单引号“'”,多个数据项时用逗号分隔如:100,120; 6.当条件为“大于”或“小于”时,条件值只能是 数字型 或日期 ,否则查询结果将可能不准确; 7.如果使用括号,请务必保证括号匹配; 8.条件值尽量避免有“'、%”等特殊 字符
1、将Int 转为varchar经常用 concat函数,比如concat(8,’0′) 得到 字符 串 ’80’ 2、将varchar 转为Int 用 cast(a as signed) a为varchar类 字符 串 总结:类 转换和 SQL Server一样,就是类 参数有点点不同 : CAST(xxx AS 类 ) , CONVERT(xxx,类 ) 可用的类 二进制,同带binary前缀的效果 : BINARY 字符 ,可带参数 : CHAR() 日期 : DATE 时间: TIME 日期时间 : DATETIME 浮点数 : DECIMAL 整数 : SIGNED 无符号整数 :
使用全文搜索查询数据 在数据库中快速搜索数据,使用索引可以提高搜索速度,然而索引一般是建立在 数字型 或长度比较短的文本 字段 上的,比如说编号、姓名等 字段 ,如果建立在长度比较长的文本 字段 上,更新索引将会花销很多的时间。如在文章内容 字段 里用lik e 语句搜索一个关键字, 当数据表里的内容很多时,这个时间可能会让人难以忍受。 在 SQL Server 中提供了一种名为全文索引的技术,可以大大提高从长 字符 串里搜索数 据的速度,在本章里,将会对全文索引进行详细的介绍。
例如:select (a+b) as c from 表 类 也一致都是varchar 的,可就是显示不正确。 直到concat() My SQL 中concat函数 下面通过一个例子介绍My SQL 中的concat函数的使用 方法 ,比如select concat(’11’,’22’,’33’)。 My SQL 中concat函数 使用 方法 : CONCAT(str1,str2,…) 返回结果为连接参数产生的 字符 串。如有任何一个参数为NULL ,则返回值为 NULL。 注意: 如果所有参数均为非二进制 字符 串,则结果为非二进制 字符 串。 如果自变量中含有任一二进制 字符 串,则结果为一个二进制 字符 串。 一个 数字 参数被
1. 熟悉大 数据库实验环境,以MS SQL SERVER为例。 2. 掌握MS SQL SERVER的企业管理器的用法。 3. 能够根据给定的设计要求,设计数据库和数据库表结构。 4. 能够使用MS SQL SERVER的企业管理器完成数据库创建和表创建等操作。 5. 能够往表中添加数据记录。 二、实验内容 (1)创建数据库 1. 数据库名字为:abc; 2. 此数据库包含两个数据文件,其中主数据文件的逻辑文件名为:Data1,物理文件名为Data1_data.mdf,初始大小为3MB,存放在新建目录下,增长方式为自动增长,每次增加1MB,最多增长到10MB。辅助数据文件的逻辑文件名为:Data2,物理文件名为Data2_data.ndf,初始大小为2MB,同主数据文件存放在相同的位置,不自动增长。 3. 日志文件的逻辑文件名为:log1,物理文件名为log1_log.ldf,初始大小为2MB,同主数据文件存放在相同的位置,增长方式为自动增长,每次增加15%。 (2) 创建表 为描述销售人员对产品的销售情况,定义了三张表:销售人员表、产品表和销售情况表,分别用于描述销售人员的基本信息、产品的基本信息和销售人员与产品之间的销售情况。写出在 “abc”数据库中定义这三张表的语句并创建这三张表,(请将语句以文件形式保存下来,文件名为“考生名. sql ”,存放在新建的目录下。可以将下述所有的 SQL 语句均保存到此文件中,在文件中要注明题号),三张表的结构为: 注:括号中为表名和列名的拼音表示,建表时用拼音表示表名和列名即可。 1. 销售人员表(XSRYB)包括如下 字段 : 职工号(ZGH):普通编码定长 字符 ,6位长,主码 姓名(XM):普通编码定长 字符 ,10位长,非空 年龄(NL):整 ,取值范围为20 ~ 60,允许空 地区(DQ):普通编码可变长 字符 ,10位长,允许空 邮政编码(YZhBM):普通编码定长 字符 ,6位长,每一位必须是 数字 ,允许空 2. 产品表(CPB)包括如下 字段 : 产品号(CPH):普通编码定长 字符 ,6位长,主码 产品名(CPM):普通编码可变长 字符 ,20位长,非空 生产厂家(SCCJ):普通编码定长 字符 ,10位长,非空 价格(JG):整 ,大于0,允许空 生产日期(SCRQ): 小日期时间 (SmallDatetime),允许空,默认为系统当前日期 3. 销售情况表(XSQKB)包括如下 字段 : 职工号(ZGH):普通编码定长 字符 ,6位长,非空 产品号(CPH):普通编码定长 字符 ,6位长,非空 销售日期(XSRQ):小日期时间 ,非空 销售数量(XSSL):整 ,允许空 其中:(职工号,产品号,销售日期)为主码 职工号为引用销售人员表的外码,产品号为引用产品表的外码。 (3) 在表中加入数据 销售人员表 '职工号','姓名','年龄','地区','邮政编码' 'G01','人员1',25,'北京','100101' 'G02','人员2',45,'北京','100108' 'G03','人员3',30,'天津','200211' 'G04','人员4',42,'天津','200322' 'G05','人员5',50,'南京','123456' 'G06','人员6',38,'上海','300310' 'G07','人员7',28,'上海','300123' 'G08','人员8',55,'上海','300456' 产品号 产品名 生产厂家 价格 生产日期 P02 电冰箱 北京 4800 2002/2/14 P03 计算机 北京 7900 2001/11/1 P04 音响 上海 4000 2001/4/6 P05 空调 上海 3800 2001/10/11 P06 洗衣机 青岛 3100 2001/9/18 P07 笔记本 北京 11230 2001/8/30 P08 微波炉 天津 1980 2002/1/20 销售情况表 职工号 产品号 销售日期 销售数量 G03 P04 2001/11/20 16 G03 P05 2001/11/20 2 G05 P02 2002/5/2 1 G06 P07 2001/12/4 5 G06 P08 2002/4/4 10 G03 P02 2002/6/5 4 G08 P02 2001/12/5 1 三、附加题(可以不做) (1)在“表中加入数据”的过程,可否采用导入的 方法 ,而不是手工输入?(提示:将数据拷贝到Excel或者Txt文件,通过MS SQL Server提供的导入功能) (2)可否把完成的abc数据库进行备份?然后在另外一台数据库服务器上进行还原?(提示:MS SQL Server企业管理器提供数据库的备份和还原功能)
### 回答1: SQL 排序 是指根据某个或某些 字段 的值对查询结果进行 排序 ,通常使用ORDER BY语句 实现 。如果需要对查询结果进行二次 排序 ,即在第一次 排序 的基础上再次 排序 ,可以通过添加多个ORDER BY子句来 实现 。 例如,假设需要对一张员工信息表进行 排序 ,首先按照工资从高到低 排序 ,然后按照入职时间从早到晚 排序 。可以使用以下 SQL 语句: SELECT * FROM employee ORDER BY salary DESC, hire_date ASC; 这里的ORDER BY子句包含了两个 排序 规则,第一个规则是按照salary 字段 的降序 排序 ,第二个规则是在第一次 排序 结果的基础上按照hire_date 字段 的升序 排序 。 如果需要对包含空值的 字段 进行 排序 ,可以使用NULLS FIRST或NULLS LAST子句来指定空值的位置。例如,如果需要将空值排在最前面,则可以使用以下 SQL 语句: SELECT * FROM employee ORDER BY salary DESC NULLS FIRST; 这里的NULLS FIRST子句将空值排在了 排序 结果的最前面。 总而言之, SQL 排序 可以通过多个ORDER BY子句 实现 二次 排序 ,空值的 排序 位置也可以通过NULLS FIRST或NULLS LAST子句来指定。 ### 回答2: 当我们需要对一个表中的数据进行 排序 时,我们可以使用 SQL 语句中的 ORDER BY 子句来 实现 。ORDER BY 子句可以按照一个或多个 字段 进行 排序 ,同时可以指定升序或降序排列。例如,以下 SQL 语句可以按照学生的分数从高到低进行 排序 。 SELECT * FROM students ORDER BY score DESC; 如果需要按照多个 字段 进行 排序 ,可以在 ORDER BY 子句中按照顺序列出多个 字段 ,并且每个 字段 可以指定不同的 排序 方式。例如,以下 SQL 语句可以按照学生的年级和分数进行 排序 。 SELECT * FROM students ORDER BY grade ASC, score DESC; 在进行多 字段 排序 时,会按照所有 字段 排序 顺序进行 排序 。如果两个学生的年级一样,那么会按照分数从高到低进行 排序 。如果两个学生的年级和分数都一样,那么它们的顺序是不确定的。 如果需要在多 字段 排序 之后,再按照其它 字段 进行 排序 ,可以使用子查询和 ORDER BY 子句的嵌套。例如,以下 SQL 语句会先按照学生的年级和分数 排序 ,然后按照姓名进行 排序 。 SELECT * FROM ( SELECT * FROM students ORDER BY grade ASC, score DESC ) AS sorted ORDER BY name ASC; 注意,在进行子查询嵌套时,需要给子查询一个别名(AS sorted),否则会出现语法错误。 最后,如果表中某些 字段 的值为空,那么它们可能导致 排序 出现问题。默认情况下,使用 ORDER BY 子句 排序 时,空值会被排到最后(如果是升序 排序 ),或者排到最前面(如果是降序 排序 )。如果需要在 排序 时将空值放在最前面或最后面,可以使用 NULLS FIRST 或 NULLS LAST 关键字。例如,以下 SQL 语句会将空值排在最前面,然后按照年级和分数进行 排序 。 SELECT * FROM students ORDER BY grade ASC NULLS FIRST, score DESC NULLS FIRST; 综上所述, SQL 中的 排序 可以 实现 对表中数据的按需 排序 ,包括多 字段 排序 和在 排序 之后再进行 排序 。同时,对于空值,也提供了一些特殊的 排序 方式,以便满足不同的 排序 需求。 ### 回答3: SQL (Structured Query Language),也称为结构化查询语言,是一种被广泛应用于关系 数据库管理系统的编程语言。 SQL 中有一个重要的功能就是可以对查询结果进行 排序 操作。在 排序 操作中,有时需要对多个 字段 进行 排序 ,也可能会碰到 排序 字段 中出现空值的情况。 首先介绍一下单 字段 排序 。当我们需要对一个 字段 进行 排序 操作时,可以使用`ORDER BY`子句对查询结果进行 排序 。例如,下面的 SQL 语句对一个学生成绩表按照数学成绩从高到低进行 排序 : SELECT name, math_score FROM student_scores ORDER BY math_score DESC; 在这里,`ORDER BY`指令将查询结果按照`math_score` 字段 的值进行 排序 ,并且选择降序排列(DESC,即“降序”)。 在多 字段 排序 中,我们需要对多个 字段 进行 排序 。例如,假设我们的学生成绩表中除了数学成绩外,还有英语成绩和语文成绩,我们需要同时按照三个 字段 进行 排序 。在这种情况下,我们可以使用`ORDER BY`子句后跟多个 排序 条件进行多 字段 排序 : SELECT name, math_score, english_score, chinese_score FROM student_scores ORDER BY math_score DESC, english_score DESC, chinese_score DESC; 在这里,`ORDER BY`指令首先按照`math_score`从高到低 排序 ,然后按照`english_score`进行 排序 ,最后按照`chinese_score`进行 排序 。 有时, 排序 字段 中可能会出现空值。默认情况下,My SQL 会将空值视为最小值。例如,下面的 SQL 语句对一个订单表按照订单金额进行 排序 : SELECT order_id, order_amount FROM orders ORDER BY order_amount DESC; 如果订单表中存在某些订单金额为NULL的订单,则这些订单将会被排在最前面,而不是按照实际的金额大小进行 排序 。为了避免这种情况,我们可以使用`NULLS LAST`或者`NULLS FIRST`指令来改变空值在 排序 结果中的位置。例如,使用`NULLS LAST`指令可以将空值排在所有有值的数据之后: SELECT order_id, order_amount FROM orders ORDER BY order_amount DESC NULLS LAST; 在这里,`NULLS LAST`指令将空值在 排序 结果中排在所有有值的订单之后。 综上所述, SQL 中的 排序 功能可以非常方便地对查询结果进行 排序 操作,在多 字段 排序 和空值处理方面也提供了丰富的指令,可以帮助我们更好地处理数据。