sqlserver 2008 字符串和int拼接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 2008 字符串和int拼接相关的知识,希望对你有一定的参考价值。

update TBIANMA set 编码='418595590_zcy_00'+编码 where 编码 >=10 and 编码<100
go
update tbianma set 编码='418595590_zcy_0'+编码 where 编码 >=100

报错-----------------------------------
(90 行受影响)
消息 245,级别 16,状态 1,第 1 行
在将 varchar 值 '418595590_zcy_0010' 转换成数据类型 int 时失败。

先执行的那条不会报错,第二条就会报错

参考技术A 你的编码字段要是varchar类型,字段长度足够长追问

我的意思是,为什么第二条报错,第一条不会

追答

第一条确定不会报错吗,是不是第一条符合条件的数据都没有

sqlserver 字符串拼接及拆开联表查询的问题

一、sql根据一个以逗号隔开的人员guid类型的ID字符串查出其对应的姓名同样拼接成逗号隔开的字符串:

1、需求:管理员发送通知(通知分为普通通知,奖品订单,调查问卷三种类型)给用户,并且可以查看统计哪些人员查看了,哪些还没有查看。

2、数据库表设计:通知表,人员表,奖品订单表,调查问卷的3个表,用户通知表

3、sql语句查讯已发通知信息:

select a.*,e.NoRead,e.AlRead,ToUserName= STUFF(( SELECT , + Name
                         FROM   Users d
                         where   PATINDEX(%, + RTRIM(Account) + ,%,, + a.ToUserID + ,)>0
                         ORDER BY PATINDEX(%, + RTRIM(Account) + ,%,, + a.ToUserID + ,)        --加上排序不变(如:2,1,3)
                       FOR XML PATH(‘‘)), 1, 1,‘‘),
case a.NoticeTypeID when 2 then 调查问卷 when 3 then 奖品订单 else 普通通知 end as NoticeTypeName,b.AwardOrderTitle,
b.AwardOrderDescription,c.QuestionnaireTitle
from Notices a left join AwardOrders b on a.AwardOrderID=b.ID and b.status=1 left join QuestionnairesInfor c on a.QuestionnaireID=c.ID and c.status=1 left join (select NoticeID, COUNT(1)as sumcount,NoRead=sum(case [status] when 1 then 1 else 0 end),
AlRead= sum(case [status] when 2 then 1 else 0 end)
from UserNotices group by NoticeID) e on a.NoticesID=e.NoticeID where a.status=1

 

二、根据字段ToUserID中存储的以逗号隔开的用户Guid类型的ID字符串,将通知发送到用户通知表:

1、需求:将通知分发给各个用户(根据用户分条保存到用户表)

2、数据库设计同一

3、sql发送通知:

insert into UserNotices(ID,NoticeID,Noticetype,AwardsOrderID,QuestionnaireID,CreatManAccount,CreatManName,CreatDate,[status]) 
( select NEWID(),NoticesID,NoticeTypeID,AwardOrderID,QuestionnaireID,b.Account,b.Name,GETDATE(),1 
from Notices a left join Users b on PATINDEX(%, + RTRIM(Account) + ,%,, + a.ToUserID + ,)>0
where a.NoticesID=@NoticeID ) --@NoticeID为参数通知ID

 

以上是关于sqlserver 2008 字符串和int拼接的主要内容,如果未能解决你的问题,请参考以下文章

sql查询中字符串拼接的问题

java中如何解决sql字符串的拼接

sql语句的拼接问题,前端传递过来的字符串我们怎么拼接?

sqlserver中如何把字符串转换成数字

sqlserver中怎么拼接查询语句

sqlserver如何把取出的数据拼接起来