数据库字符类型的转换问题!!!急!!!!!!

shaoml 2007-11-14 03:15:23
我有个表A, 里面的字段有 ID(主键),IP,ZIP,
其中 IP的类型是 varchar 型的,ZIP是 int 型的,怎么用SQL语句 把IP转换成 int 型的? 并把 IP 的值对应的插入到 ZIP 中???
...全文
275 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaoml 2007-11-14
  • 打赏
  • 举报
回复
感谢大家。改为bigint型了,OK了! 结贴!
dobear_0922 2007-11-14
  • 打赏
  • 举报
回复
改成Bigint型的话,还是用我在11楼的转换看着比较直观,,,
kk19840210 2007-11-14
  • 打赏
  • 举报
回复
将 expression 转换为数据类型 int 时发生算术溢出错误。
语句已终止。

是超出了 INT 类型 的范围

integer 或 int
长度为 4 个字节,存储从 -2.147.483.648 到 2.147.483.647 的数字。



应该转换成 bigint 类型就可以了
 convert(bigint,数据)


bigint
长度为 8 个字节,存储从 –2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807) 的数字。
dobear_0922 2007-11-14
  • 打赏
  • 举报
回复
这是什么错?

--
把ZIP改为Bigint型
shaoml 2007-11-14
  • 打赏
  • 举报
回复
将 expression 转换为数据类型 int 时发生算术溢出错误。
语句已终止。

这是什么错?
dobear_0922 2007-11-14
  • 打赏
  • 举报
回复
这个可以的,可怎么插入到 ZIP 字段啊?? 再帮下忙吧。谢谢!

------------
update tb
set ZIP=PARSENAME(IP,1)
+PARSENAME(IP,2)*POWER(256,1)
+PARSENAME(IP,3)*POWER(256,2)
+PARSENAME(IP,4)*convert(bigint,POWER(256,3))


shaoml 2007-11-14
  • 打赏
  • 举报
回复
declare @str varchar(100)
set @str='211.211.0.214'
select PARSENAME(@str,1)*POWER(256,0)+PARSENAME(@str,2)*POWER(256,1)+PARSENAME(@str,3)*POWER(256,2)+PARSENAME(@str,4)*convert(bigint,POWER(256,3))

这个可以的,可怎么插入到 ZIP 字段啊?? 再帮下忙吧。谢谢!
dobear_0922 2007-11-14
  • 打赏
  • 举报
回复
declare @IP varchar(32)
set @IP='211.211.0.214'
select ZIP=parsename(@IP,4)*cast(1000000000 as bigint)
+parsename(@IP,3)*1000000
+parsename(@IP,2)*1000
+parsename(@IP,1)

ZIP
--------------------
211211000214

(1 row(s) affected)
kk19840210 2007-11-14
  • 打赏
  • 举报
回复
应该是 bigint 吧 int 会超出范围的

IP 地址转换成 INT 的规律应该是
211.211.0.214

211*256^3+211*256^2+0*256^1+214*256^0
kk19840210 2007-11-14
  • 打赏
  • 举报
回复


declare @str varchar(100)
set @str='211.211.0.214'
select PARSENAME(@str,1)*POWER(256,0)+PARSENAME(@str,2)*POWER(256,1)+PARSENAME(@str,3)*POWER(256,2)+PARSENAME(@str,4)*convert(bigint,POWER(256,3))


---结果

--------------------
3553820886

(所影响的行数为 1 行)

shaoml 2007-11-14
  • 打赏
  • 举报
回复
将211.211.0.214形式的IP地址转换成10进制整数

而我的库中IP值'211.211.0.214 ' 象这样,后面有好多空格 该怎么处理?


fa_ge 2007-11-14
  • 打赏
  • 举报
回复
楼主给个事例
OracleRoob 2007-11-14
  • 打赏
  • 举报
回复
IP转换为int,要有个规则吧?
kuangdp 2007-11-14
  • 打赏
  • 举报
回复
没明白,想变成怎样的
dobear_0922 2007-11-14
  • 打赏
  • 举报
回复
select cast(replace('211.211.0.214','.','') as int)

/*
-----------
2112110214

(1 row(s) affected)
*/
dobear_0922 2007-11-14
  • 打赏
  • 举报
回复
cast(replace(IP,'.','') as int)

dobear_0922 2007-11-14
  • 打赏
  • 举报
回复
cast(IP as int)
shaoml 2007-11-14
  • 打赏
  • 举报
回复
补充:IP的值是象 211.211.0.214 这种格式的。 我就是想把IP转换成整型。。。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧