bigint的长度为8个字节,共64位,能够存储-263~263-1之间的所有数字
这个长度还不够?那就用decimal吧decimal(p, s)。
其中:p:为指定精度或对象能够控制的数字个数。
s:为指定可放到小数点右边的小数位数或数字个数。
p和s必须遵守以下规则:0 <= s <= p <= 38
这个长度还不够?那就用decimal吧decimal(p, s)。
其中:p:为指定精度或对象能够控制的数字个数。
s:为指定可放到小数点右边的小数位数或数字个数。
p和s必须遵守以下规则:0 <= s <= p <= 38
解决方案 »
- [行列转换问题]下列的行如何转换成列,关键是列名如何也要成为其中一行返回?
- 用sp_addlinkedserver添加了连接服务器,那在存储过程中的事物,该怎么写呢!以前的写法,去都报错!
- 如何定时执行sql?
- 关于算数运算表达式问题!
- 在C#里从VF数据库导出数据到SQLSERVER中
- 如果我用DELPHI连接SQL SERVER 执行了一个错误的SQL 我如何能捕捉这个错误 并把对应的错误写到文本里面呢
- 数据库里有1,2,3,4,5 共5条记录,要用一条sql语句让其排序,使它排列成4,5,1,2,3,怎么写
- 如何删除导入数据不成功的表
- SqlServer打了SP4以后启动纤程后SQLAgent任务都失败,请问怎么回事呢?高分求助~
- 求教第二次安装SQL Server2008数据库引擎和文件复制怎么老是显示失败?
- 向大牛们求教一个对小弟来说超难的sql
- 高分求一条SQL语句
长度为 8 个字节,存储从 –2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807) 的数字。
怎么还会溢出呢?
为何要把IP转化成bigint呢?而不转成字段串格式呢。
set @s=power(cast(256 as dec(38,0)),4)+power(cast(256 as dec(38,0)),3)+power(cast(256 as dec(38,0)),2)+power(cast(256 as dec(38,0)),1)
select @s----------------------------------------
4311810304(所影响的行数为 1 行)declare @s dec(38,0)
set @s=power(cast(256 as dec(38,0)),4)+power(cast(256 as dec(38,0)),4)+power(cast(256 as dec(38,0)),4)+power(cast(256 as dec(38,0)),4)
select @s
----------------------------------------
17179869184(所影响的行数为 1 行)
drop function [dbo].[f_IP2Int]
GO--1. 字符串IP地址转换成IP数值函数。
CREATE FUNCTION dbo.f_IP2Int(
@ip char(15)
)RETURNS bigint
AS
BEGIN
DECLARE @re bigint
SET @re=0
SELECT @re=@re+LEFT(@ip,CHARINDEX('.',@ip+'.')-1)*ID
,@ip=STUFF(@ip,1,CHARINDEX('.',@ip+'.'),'')
FROM(
SELECT ID=CAST(16777216 as bigint)
UNION ALL SELECT 65536
UNION ALL SELECT 256
UNION ALL SELECT 1)a
RETURN(@re)
END
GO
/*===========================================================*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_Int2IP]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_Int2IP]
GO--1. 字符串IP地址转换成IP数值函数。
CREATE FUNCTION dbo.f_Int2IP(
@IP bigint
)RETURNS varchar(15)
AS
BEGIN
DECLARE @re varchar(15)
SET @re=''
SELECT @re=@re+'.'+CAST(@IP/ID as varchar)
,@IP=@IP%ID
from(
SELECT ID=CAST(16777216 as bigint)
UNION ALL SELECT 65536
UNION ALL SELECT 256
UNION ALL SELECT 1)a
RETURN(STUFF(@re,1,1,''))
END
GO