• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 正解SQLSEVER 2005 sql排序(按大小排序)

正解SQLSEVER 2005 sql排序(按大小排序)

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了SQLSEVER,2005,sql排序等相关知识,希望本文的分享对您有所帮助

Insus.NET写了一个函数,可以方便以后的扩展,如果数值出现TB或是或更高时,可以只改这个函数即可。

今天在论坛上看到一个问题,如下:

解决这个问题,Insus.NET写了一个函数,可以方便以后的扩展,如果数值出现TB或是或更高时,可以只改这个函数即可。
代码如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[udf_OrderLimitSize]
(
@Ov NVARCHAR(30)
)
RETURNS decimal(18,6)
AS
BEGIN
--如果长度少于等于2的数值为返回NULL
IF (LEN(@Ov) <= 2)
RETURN NULL
--宣告两个变量
DECLARE @v DECIMAL(18,6),@n DECIMAL(18,6)

--判断最后两位数是否为下面这些单位
IF (RIGHT(@Ov,2) NOT IN ('TB','GB','MB','KB'))
RETURN NULL
--去掉最后两位数之后,把值转为DECIMAL数据类型
SET @n = CONVERT(DECIMAL(18,6),LEFT(@Ov, LEN(@Ov) - 2))
--判断截除最后两位数之后,使用ISNUMERIC判断是否为有效的数值,如果不是返回NULL
IF (ISNUMERIC(@n) = 0)
RETURN NULL
--下面做单位转算,如果遇上有新单位时,可以作相应添加
IF (@Ov LIKE '%TB')
SET @v = @n * 1024 * 1024 * 1024
IF (@Ov LIKE '%GB')
SET @v = @n * 1024 * 1024
IF (@Ov LIKE '%MB')
SET @v = @n * 1024
IF (@Ov LIKE '%KB')
SET @v = @n
RETURN @v
END

下面为了应用这个函数,例举例子:
代码如下:
CREATE TABLE test(id int identity(1,1),size NVARCHAR(50))
GO
INSERT INTO [test] values('23.5mb'),('10gb'),('12.7mb'),('8GB')
go
SELECT [id],[size] FROM test ORDER BY [dbo].[udf_OrderLimitSize]([size])

执行结果:

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 正解SQLSEVER 2005 sql排序(按大小排序)
  • SQLSever导入数据图文方法

相关文章

  • 2018-12-05MySQL之——查询重复记录、删除重复记录方法大全
  • 2018-12-05mysql-python 错误,求解决办法
  • 2018-12-05MySQL中3种清除binlog的方法!
  • 2018-12-05sql 查询慢的原因分析
  • 2017-05-11解析SQLite中的常见问题与总结详解
  • 2017-05-11UCenter info: MySQL Query Error SQL:SELECT value FROM [Table]vars WHERE noteexists
  • 2018-12-05SQL 2005使用专用管理员连接(DAC)的技巧及修改系统表的方法
  • 2018-12-05用MySQL创建数据库和数据库表代码
  • 2018-12-05SQLServer 2008中的代码安全(七) 证书加密
  • 2017-05-11mysql合并多条记录的单个字段去一条记录编辑

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 清空MSSQL日志 与set recovery simple
    • MySQL中一些优化straight_join技巧
    • 使用SQL实现小计,合计以及排序
    • SQL 中sp_executesql存储过程的使用帮助
    • 利用SQL注入漏洞拖库的方法
    • MongoDB进阶篇之动态字段设计
    • MySQL数据库安全设置与注意事项小结
    • php 不能连接数据库 php error Can't connect to local MySQL server
    • 比较全面的MySQL优化参考
    • 两种lnmp重置mysql数据库root密码的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有