投票类型相关sql语句的写法
2009-03-31 12:45
288 查看
1.建表
game_shoevote
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[game_shoevote]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[game_shoevote]
GO
CREATE TABLE [dbo].[game_shoevote] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[number] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[allcount] [int] NULL ,
[flag] [int] NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[game_shoevote] ADD
CONSTRAINT [DF_game_shoevote_allcount] DEFAULT (0) FOR [allcount],
CONSTRAINT [DF_game_shoevote_flag] DEFAULT (1) FOR [flag],
CONSTRAINT [PK_game_shoevote] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GO
2.//初始化数据,从1到27
declare @num int
set @num=1
while @num<=27
begin
insert into game_shoevote(number,allcount,flag) values(@num,0,1)
set @num=@num+1
end
3.//对客户上行的候选号进行处理
/*
*客户提交的信息进行处理,如:10+01+2+02
*转化为:10,1,2,2结果集返回
*/
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(num varchar(100))
--实现split功能 的函数
--date :2005-4-20
--Author :Domino
--date :2009-03-30
--Modify Autho:fjfdszj
as
begin
declare @i int /*控制循环次数*/
declare @value int /*去零方法*/
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
set @value=0;
while @i>=1
begin
if(ISNUMERIC(left(@SourceSql,@i-1))=1)/*去零方法*/
begin
set @value=left(@SourceSql,@i-1)
insert @temp values(@value)
end
else /*字符串*/
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'/'
begin
if(ISNUMERIC(@SourceSql)=1)/*去零方法*/
begin
set @value=@SourceSql
insert @temp values(@value)
end
else /*字符串*/
insert @temp values(@SourceSql)
end
return
end
4.可用以上函数处理如下问题
A.客户上行候选号个数
select count(*) from db3Tsms.dbo.f_split(@curcontent,'+');
B.客户上行候选号重复
select @flag=count(*) from
(
select count(num) num from db3Tsms.dbo.f_split(@curcontent,'+') group by num having count(num)>1
)aa
C.客户上行的候选号不存在于基本表中
select @flag=count(*) from db3Tsms.dbo.f_split(@curcontent,'+') where not EXISTS
(select * from db3Tsms.dbo.game_shoevote where num=number )
game_shoevote
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[game_shoevote]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[game_shoevote]
GO
CREATE TABLE [dbo].[game_shoevote] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[number] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[allcount] [int] NULL ,
[flag] [int] NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[game_shoevote] ADD
CONSTRAINT [DF_game_shoevote_allcount] DEFAULT (0) FOR [allcount],
CONSTRAINT [DF_game_shoevote_flag] DEFAULT (1) FOR [flag],
CONSTRAINT [PK_game_shoevote] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GO
2.//初始化数据,从1到27
declare @num int
set @num=1
while @num<=27
begin
insert into game_shoevote(number,allcount,flag) values(@num,0,1)
set @num=@num+1
end
3.//对客户上行的候选号进行处理
/*
*客户提交的信息进行处理,如:10+01+2+02
*转化为:10,1,2,2结果集返回
*/
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(num varchar(100))
--实现split功能 的函数
--date :2005-4-20
--Author :Domino
--date :2009-03-30
--Modify Autho:fjfdszj
as
begin
declare @i int /*控制循环次数*/
declare @value int /*去零方法*/
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
set @value=0;
while @i>=1
begin
if(ISNUMERIC(left(@SourceSql,@i-1))=1)/*去零方法*/
begin
set @value=left(@SourceSql,@i-1)
insert @temp values(@value)
end
else /*字符串*/
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'/'
begin
if(ISNUMERIC(@SourceSql)=1)/*去零方法*/
begin
set @value=@SourceSql
insert @temp values(@value)
end
else /*字符串*/
insert @temp values(@SourceSql)
end
return
end
4.可用以上函数处理如下问题
A.客户上行候选号个数
select count(*) from db3Tsms.dbo.f_split(@curcontent,'+');
B.客户上行候选号重复
select @flag=count(*) from
(
select count(num) num from db3Tsms.dbo.f_split(@curcontent,'+') group by num having count(num)>1
)aa
C.客户上行的候选号不存在于基本表中
select @flag=count(*) from db3Tsms.dbo.f_split(@curcontent,'+') where not EXISTS
(select * from db3Tsms.dbo.game_shoevote where num=number )
相关文章推荐
- Oracle clob类型的字段作为查询条件的sql语句写法
- SQL查询时常用,但不熟悉的相关语句-----邮标,行号,临时表,类型转换,字符串函数,sql 判断语句,检查是不是数字,变量,sql split 函数
- mysql中使用sql语句插入日期时间类型的写法
- MySQL中使用sql语句插入日期时间类型的写法
- MyBatis中,传String类型参数到xml配置文件,并执行SQL语句后返回String类型的结果写法(jeesite)
- 常用的sql,hql等相关的语句
- 跟踪oracle中sql语句执行过程及相关知识拓展
- SQL语句插入日期类型
- 批量更新的sql语句写法
- 查询最大值SQL语句写法
- Oracle学习(三)--数据类型及常用sql语句
- (转)列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息的SQL语句
- 两个读取数据库VIew的定义的SQL语句的写法[Oracle /SQL SERVER]
- 常用数据库取前10条sql语句写法
- 对于n个条件中有大于等于或小于m个条件成立时符合要求的sql 条件语句的写法
- 返回数据库表中第m到n条记录集的sql语句的两种写法
- sqlserver数据库里sql 语句查看表里的约束,要查出 约束名、列名、约束类型、触发器
- 关于同时查询父子名称的SQL查询语句的写法 id name parentId parentName
- 关于信息查询和相关的数据库操作语句的写法
- 中等难度SQL语句(存储过程,分页,拼接字段、游标,日期类型转换,动态行转列,视图)汇总