Chinaunix首页 | 论坛 | 博客
  • 博客访问: 65792
  • 博文数量: 42
  • 博客积分: 1730
  • 博客等级: 上尉
  • 技术积分: 430
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-02 13:06
文章分类

全部博文(42)

文章存档

2011年(1)

2009年(41)

我的朋友

分类: 数据库开发技术

2009-11-26 15:24:16

数据库操作:利用函数减少存储空间(以时间换取空间)

例如一个表有IP列,在存储的时候我们为了减少存储空间,可以将它转化为整数,存储在数据库,但是在从数据库里查询并显示给大家看的时候,可能你是看不明白整数具体是什么。这样为了利于大家阅读分析数据,可以在查询的时候利用函数将整数IP转为为字符串

例如:

Select IP from table

123

Select IpToString(IP) table

0.0.0.123

关键就是这个IpToString函数的实现:

在“函数”处,右击,选择“新建”,再选择“标量值函数”,在出现的页面里根据提示编写自己的函数,下面的函数是将IP对应的整数转化为字符串

USE [Test]
GO
/****** Object: UserDefinedFunction [dbo].[Ip2String] Script Date: 11/26/2009 11:42:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================

-- Author:        

-- Create date:

-- Description:    

-- =============================================

ALTER FUNCTION [dbo].[Ip2String]
(
    -- Add the parameters for the function here

    @ip int
)
RETURNS nvarchar(16)
AS
BEGIN
    -- Declare the return variable here

    DECLARE @result nvarchar(16)

    -- Add the T-SQL statements to compute the return value here

    SELECT @result = Cast ((@ip / power(2,24)) & 0xFF AS nvarchar) + '.'
                                 + Cast ((@ip / power(2,16)) & 0xFF AS nvarchar) + '.'
                                 + Cast ((@ip / power(2,8)) & 0xFF AS nvarchar) + '.'
                                 + Cast (@ip & 0xFF AS nvarchar)
    

    -- Return the result of the function

    RETURN @result

END


阅读(1851) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~