生小孩的sql问题,大家来啊.

money888888 2006-08-25 09:50:57
数据库中的数据是这样的
a
100
100.01
100.02
100.01.01
100.01.02
100.01.03
...
想要的显示结果是
a
100
100
100
100.01
100.01
100.01
...
也就是去掉最后一个.和他后边的数 通过一个函数生成一个这样的新视图最好 这个函数怎么写呢?下边是拿asp写的 不知道怎么改成sql的
if instr(str,".")<>0 then
dim strarr
strarr=split(str,".")
str=left(str,len(str)-len(strarr(ubound(strarr))))
else
str=str
end if


CSDN论坛浏览器:浏览、发帖、回复、结贴自动平均给分,下载地址:http://CoolSlob.ys168.com
...全文
827 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
张三大胖 2006-08-29
  • 打赏
  • 举报
回复
create function F_R(@Str varchar(100))
returns varchar(100)
as
begin
declare @r varchar(100)
select @r=left(@str,len(@str)-charindex('.',reverse(@str)))
return @r
end
go
yongyupost2000 2006-08-26
  • 打赏
  • 举报
回复
测试:
declare @t table( a varchar(100))
insert @t select '100'
union all select '100.01'
union all select '100.02'
union all select '100.01.01'
union all select '100.01.02'
union all select '100.01.03'

select reverse(stuff(reverse(a),1,charindex('.',reverse(a)),'')) from @t

结果:


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
100
100
100
100.01
100.01
100.01

(所影响的行数为 6 行)
kingtoo009 2006-08-26
  • 打赏
  • 举报
回复
帮顶..接分...
------------------------------------------------------------------------------------
100M.Net空间+50M企业邮局=60元/年
100M.Net空间+国际顶级域名=100元/年
国际顶级域名.com.net.cn=50元/年
本站申请域名可绑定免费10M Asp.Net空间
1000M.Net空间 + 100M MsSql数据库 + 1000M企业邮局 + 顶级域名=600元/年
数据库 企业邮局 网站推广 整机租用 美国空间 网站建设 均有售
还有很多优惠套餐提供给各个用户层.
有意者可联系电话:021-64802212 传真:021-64802212
咨询信箱:info@kingtoo.com 咨询OICQ:68311305,379620139 81778640
vfssqs 2006-08-25
  • 打赏
  • 举报
回复
create table bb(
col varchar(20)
)
insert bb values('100')
insert bb values('100.01')
insert bb values('100.01.01')
insert bb values('100.01.01.01')

select case when charindex('.',col,charindex('.',col)+1)=0
then col
else subString(col,0,charindex('.',col,charindex('.',col)+1))
end
from bb
xyxfly 2006-08-25
  • 打赏
  • 举报
回复
做个广告
http://community.csdn.net/Expert/topic/4974/4974603.xml?temp=.6206171
这个帖子放在那里没人回啊,追加100分,放在这里怕被删了 -_-
子陌红尘 2006-08-25
  • 打赏
  • 举报
回复
方法不行 把那些象100这样不带.的数据都删除了
----------------------------------------------------------------------------------
SQL语句中已经单独处理了,如下:

select a from 表 where charindex('.',a)=0
union all
......
specialsoldier 2006-08-25
  • 打赏
  • 举报
回复
恩 确实要用到4个基本函数
xyxfly 2006-08-25
  • 打赏
  • 举报
回复
create table test
(
number varchar(100)
)
insert test
select '100' union all
select '100.01' union all
select '100.02' union all
select '100.01.01' union all
select '100.01.02' union all
select '100.01.03'
select * from test
go
create function gaibian
(
@char char(1),
@str varchar(255)
)
returns varchar(255) as
begin
if charindex(@char,@str)>0
select @str=left(@str,len(@str)-charindex(@char,reverse(@str)))
return @str
end
go
create view tview as
select dbo.gaibian('.',number) as aaa from test
go
select * from tview
xyxfly 2006-08-25
  • 打赏
  • 举报
回复
create function gaibian
(
@char char(1),
@str varchar(255)
)
returns varchar(255) as
begin

if charindex(@char,@str)>0
select @str=left(@str,len(@str)-charindex(@char,reverse(@str)))


return @str
end
money888888 2006-08-25
  • 打赏
  • 举报
回复
:libin_ftsafe(子陌红尘:当libin告别ftsafe)() 信誉:105的方法不行 把那些象100这样不带.的数据都删除了
九斤半 2006-08-25
  • 打赏
  • 举报
回复
-- 建表
create table test(col varchar(10))
insert test
select 'a' union all
select '100' union all
select '100.01' union all
select '100.02' union all
select '100.01.01' union all
select '100.01.02' union all
select '100.01.03'
select * from test
go

-- 建函数
create function F_R(@Str varchar(100))
returns varchar(100)
as
begin
declare @r varchar(100)
select @r=left(@str,len(@str)-charindex('.',reverse(@str)))
return @r
end
go

select dbo.F_R(col) from test

drop function F_R
drop table test
子陌红尘 2006-08-25
  • 打赏
  • 举报
回复
select a from 表 where charindex('.',a)=0
union all
select reverse(stuff(reverse(a),1,charindex('.',reverse(a)),'')) from 表 where charindex('.',a)>0
money888888 2006-08-25
  • 打赏
  • 举报
回复
我想就是写一个自定义的转换函数 然后通过这个函数生成一个视图,这个我没接触过
九斤半 2006-08-25
  • 打赏
  • 举报
回复
create table test(col varchar(10))
insert test
select 'a' union all
select '100' union all
select '100.01' union all
select '100.02' union all
select '100.01.01' union all
select '100.01.02' union all
select '100.01.03'

select * from test
select left(col,len(col)-charindex('.',reverse(col))) from test

drop table test
money888888 2006-08-25
  • 打赏
  • 举报
回复
这个表里边的数据是不确定的 有很多个这样的
union all select '100'
union all select '100.01'
union all select '100.02'
union all select '100.01.01'
union all select '100.01.02'
也就是想把a这个字段 所有数据都转了 存到一个新视图里
fcuandy 2006-08-25
  • 打赏
  • 举报
回复
declare @t table(n varchar(100))
insert @t
select 'a'
union all select '100'
union all select '100.01'
union all select '100.02'
union all select '100.01.01'
union all select '100.01.02'
union all select '100.01.03'
select case when charindex('.',n)>0 then
reverse(stuff(reverse(n),1,charindex('.',reverse(n)),''))
else
n
end
from @t
xyxfly 2006-08-25
  • 打赏
  • 举报
回复
这个导出excel,搜一搜,代码一大把一大把的

比如搜asp.net导出excel
datagrid导出excel
money888888 2006-08-25
  • 打赏
  • 举报
回复
怎么在查出结果的页面里加段代码 加个按钮 让他可以导出excel
郭大侠_ 2006-08-25
  • 打赏
  • 举报
回复
老菜鸟都写得很好了
xyxfly 2006-08-25
  • 打赏
  • 举报
回复
为什么同样的数据 同样的表 同样的语句查出来的结果顺序不一样呢?


自己指定order by
加载更多回复(1)
【有详细的过程,图片演示,及代码】【历时两周完成!】 实训目的 1、理解C#WinForm程序设计的风格,能设计合理的C#项目文件夹结构和公共类,注重代码的重用性,养成良好的标识符命名和代码编写习惯; 2、熟练掌握各种常见的控件属性和事件方法; 3、积累项目开发中常采用的设计模式和比较经典代码片段,并能在以后的项目开发中熟练地运用。 实训内容 实训项目:《旅行社管理系统》   1、系统功能分析与系统设计      2、数据库设计   数据库名称:db_travelAgency   数据表:    (1)操作员信息表(编号,姓名,密码,类别)       (2)客户信息表(编号,姓名,性别,生日,职业,藉贯,联系方式,注册时间)  tb_customer(id,customer,sex,birthday,career,birthdayPlace,telephone,registerTime)   (3)景点信息表(编号,景点名称,地址,门票价格,简介,级别)      (4)省市信息表(编号,省市名,父结点编号,子结点个数,层次数,在兄弟结点中的编号,其他)      (5)风景图片信息表(编号,图片名称,二进制数据,景点名称,图片描述)     (6)订单信息表(订单编号,客户姓名,目的地,景区名,出发日期,返回日期,住宿标准,导游员,老人数,成人数,学生数,小孩数,总需费用,预付定金,所属旅行团号)      (7)旅行团信息表(团号,景点名称,导游员,出发时间,返回时间,游客人数,入住标准)    tb_groupInfo(groupID,spotName,guider,departureDate,backDdate,touristNum,dormMoney)       (8)导游员信息表(编号,姓名,性别,出生年月,到旅行社的时间,负责区域,出场费,备注)        3、模块编码与调试     (1)登录模块     (2)景点信息管理模块     (3)景点信息查询模块     (4) 日常业务模块     (4)系统维护模块     (5)软件版权模块    4、集成测试 实训步骤: 第1天:   上午—(1)分析系统功能结构,了解业务流程及各功能模块      (2)在sqlserver2005环境创建各数据库和数据表,录入相关数据 下午-- (1)设计项目文件夹结构,收集素材,编辑App.config文件; 设计文件夹结构: 添加并制作app.config文件 (2)编写公共类(连接数据库的类,实体类)。 连接数据库的类及其公共方法: 第2天:(1)设计登录模块界面布局,并进行编码和调试; (2)设计系统主界面,并处理好登录模块与系统主界面之间的跳转关系;   系统主界面: 第3天:实现景点信息的添加、修改和删除功能。 添加景点信息: 修改景点信息: 删除景点信息: 第4天:(1)设计景点信息分类查询界面布局 (2)景点信息分类查询功能编码与调试 注意:根据查询选项的不同,在查询条件位置会显示不同的控件。 第5天:(1)设计景点图片浏览器的界面布局 点击确定按钮出现第一张图片 点击“>”(下一张) 点击“>|”(最后一张) 点击“<”(上一张) (2)景点图片浏览器功能编码与调试 第6天:(1)设计“业务预订管理”界面布局; 加载窗体时: 点击“预订”工具条按钮时: 修改订单: 1、点击[修改]工具条,在订单编号文本框中输入订单号,点击查找,显示该订单信息; 2、对信息进行修改后,点击[保存]更新到数据库。 删除订单 1、点击[删除]工具条按钮,在订单编号文本框中输入订单号,点击查找按钮,在界面显示该订单的信息。 2、点击[保存]工具条按钮,删除在数据库中该订单信息。 (2)业务预订管理功能编码与调试。 参考项目中的源代码 第7天:(1)设计旅行团基本查询界面布局; (2)旅行团查询功能编码与调试 说明:查询旅行团信息时,可以按照以下四种方式查询 a.所有已经生成的旅行团;b.按订单号查询;c.按景点查询有哪些已经设立的旅行团;d.按出发日期查询有哪些已经生成的旅行团 (3)设计生成旅行团功能界面布局 “组建旅行团”消息提示,点击确定后,生成该旅行团的明细信息,显示在datagridview中,并修改订单表中对应的字段(即该订单对应的groupID),并将旅行团明细信息写入到tb_groupInfo表中 (4)生成旅行团功能编码与调试 第8天:(1)客户信息管理模块界面设计与布局; (2) 客户信息管理模块编码与调试    第9天:, 操作维护模块布局与设计 操作员维护模块编码与调试    第10天(1)数据备份与还原模块界面设计与布局     (2)数据备份与还原模块编码与调试 实训要求 不迟到,不早退; 实训过程中,同学之间组成项目小组,分工收集材料,讨论项目或模块设计方案,以及核心技术的实现方案,但彼此的程序代码不能复制粘贴; 上交的实训报告不能雷同,若完全相同,实训成绩均判为零为。

34,874

社区成员

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

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