求一SQL语句,关于字符串转换!

雄牛 2008-01-02 02:56:24
是关于如何将一个IP地圵,统一格式的問題....

表A中,字段LogIP 是字符串,显示的数据类似于:

61.1.10.5
61.151.1.35
61.12.104.135

如何更新此字段,使第一个点后面的,点与点之间的数不足3位的在左边填充0,转换为如下格式:

61.001.010.005
61.151.001.035
61.012.104.135


这个SQL语句如何写?
高人请帮看看...谢了..


...全文
95 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ojuju10 2008-01-02
  • 打赏
  • 举报
回复

create table tb(logip varchar(50))
insert into tb values('61.1.10.5')
insert into tb values('61.151.1.35')
insert into tb values('61.12.104.135')
insert into tb values('161.12.104.135')
insert into tb values('1.12.104.135')

go

select logip =
right('000'+PARSENAME(logip , 4) ,len(PARSENAME(logip , 4))) + '.' +
right('000'+PARSENAME(logip , 3) ,3) + '.' +
right('000'+PARSENAME(logip , 2) ,3) + '.' +
right('000'+PARSENAME(logip , 1) ,3)
from tb
/*
logip
---------------
61.001.010.005
61.151.001.035
61.012.104.135
161.012.104.135
1.012.104.135

*/
drop table tb
changjiangzhibin 2008-01-02
  • 打赏
  • 举报
回复
红星闪闪,顶一下!

select logip =
right('000'+PARSENAME(logip , 4) ,3) + '.' + --3改为2
right('000'+PARSENAME(logip , 3) ,3) + '.' +
right('000'+PARSENAME(logip , 2) ,3) + '.' +
right('000'+PARSENAME(logip , 1) ,3)
from tb
-狙击手- 2008-01-02
  • 打赏
  • 举报
回复
看看大体上意思到了,哪还管那么多了,只顾抢分了
dawugui 2008-01-02
  • 打赏
  • 举报
回复
死龟,上次刚学会这个函数,也不给我表现一下的机会

--------
我上面写错了,少了个+号,你看清楚了不就表现了?
dawugui 2008-01-02
  • 打赏
  • 举报
回复
create table tb(logip varchar(50))
insert into tb values('61.1.10.5')
insert into tb values('61.151.1.35')
insert into tb values('61.12.104.135')
go

select logip =
right('000'+PARSENAME(logip , 4) ,3) + '.' +
right('000'+PARSENAME(logip , 3) ,3) + '.' +
right('000'+PARSENAME(logip , 2) ,3) + '.' +
right('000'+PARSENAME(logip , 1) ,3)
from tb

drop table tb

/*
logip
---------------
061.001.010.005
061.151.001.035
061.012.104.135

(所影响的行数为 3 行)
*/
-狙击手- 2008-01-02
  • 打赏
  • 举报
回复
死龟,上次刚学会这个函数,也不给我表现一下的机会
-狙击手- 2008-01-02
  • 打赏
  • 举报
回复
select logip =
right('000'+PARSENAME(logip , 4) ,3) + '.'
right('000'+PARSENAME(logip , 3) ,3) + '.'
right('000'+PARSENAME(logip , 2) ,3) + '.'
right('000'+PARSENAME(logip , 1) ,3)
from tb
dawugui 2008-01-02
  • 打赏
  • 举报
回复
select logip =
right('000'+PARSENAME(logip , 4) ,3) + '.'
right('000'+PARSENAME(logip , 3) ,3) + '.'
right('000'+PARSENAME(logip , 2) ,3) + '.'
right('000'+PARSENAME(logip , 1) ,3)
from tb

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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