首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 在sqlserver里,如何将两个字符变量衔接起来???????? [已结贴,结贴人:txgaozhao]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • txgaozhao
    • 等级:
    发表于:2008-05-11 18:15:00 楼主
    在sqlserver里,如何将两个字符变量衔接起来????????
    假如我有三个varchar变量
    @a="ab"
    @b="cd"
    @c
    请问我应该如何使得像c#语言那样@c=@a+@b即@c=“abcd”
    40  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Sandy945
    • 等级:
    发表于:2008-05-11 18:21:581楼 得分:20
    SQL code
    declare @a varchar(10),@b varchar(10),@c varchar(20) set @a='a' set @b='b' set @c=@a+@b print @a print @b print @c -------------- a b ab
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • txgaozhao
    • 等级:
    发表于:2008-05-11 18:27:402楼 得分:0
    SQL code
    CREATE PROCEDURE Fr_add ( @userid INT, @username NVARCHAR(50), @fid INT, @fname NVARCHAR(50), ) AS UPDATE MymyUsers SET FId=FId+CAST(@userid AS VARCHAR(20))+',',FName=FName+@username+',' where UserId=@fid GO

    请问这个存储过程哪里出错了??
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Sandy945
    • 等级:
    发表于:2008-05-11 18:34:223楼 得分:0
    SQL code
    cast 换成str 试试

    现在报的什么错误
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gui0605
    • 等级:
    发表于:2008-05-11 18:44:164楼 得分:10
    引用 2 楼 txgaozhao 的回复:
    SQL code
    CREATE PROCEDURE Fr_add
    (
        @userid  INT,
        @username NVARCHAR(50),
        @fid  INT,
        @fname NVARCHAR(50),
    )
    AS
    UPDATE MymyUsers SET
    FId=FId+CAST(@userid AS VARCHAR(20))+',',FName=FName+@username+','
    where UserId=@fid
    GO


    请问这个存储过程哪里出错了??


    @userid  INT,
        @username NVARCHAR(50),
        @fid  INT,
        @fname NVARCHAR(50)

    多了个逗号
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • txgaozhao
    • 等级:
    发表于:2008-05-11 19:05:145楼 得分:0
    楼上说的只是小问题而已

    EXEC Fr_add 132,'123a',152,'ss'
    我用这个执行存储过程时,第一次执行时没有出问题,第二次就不行了

    将 varchar 值 '132,' 转换为数据类型为 int 的列时发生语法错误。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gui0605
    • 等级:
    发表于:2008-05-11 19:10:146楼 得分:0
    FId+CAST(@userid AS VARCHAR(20))

    int型加上VARCHAR?
    这样肯定出错


    这个地方你想要什么结果?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • txgaozhao
    • 等级:
    发表于:2008-05-11 19:17:147楼 得分:0
    o(∩_∩)o...哈哈,仔细研究之后,发现是另外的地方出错了
    不过还有个小问题,我把改好的完整存储过程贴出来
    SQL code
    CREATE PROCEDURE Fr_add ( @userid INT, @username NVARCHAR(50), @fid INT, @fname NVARCHAR(50) ) AS if CAST(@userid AS VARCHAR(20)) not in (select FId from MymyUsers where UserId=@fid) begin UPDATE MymyUsers SET FId=FId+CAST(@userid AS VARCHAR(20))+',',FName=FName+@username+',' where UserId=@fid end GO

    刚开始出现的问题是在这里if CAST(@userid AS VARCHAR(20)),我忘记转换这里的@userid类型了。现在我已经转换过来了,已经没有语法错误了,但是if CAST(@userid AS VARCHAR(20)) not in (select FId from MymyUsers where UserId=@fid)这句话不起作用,怎么办?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Sandy945
    • 等级:
    发表于:2008-05-11 19:17:558楼 得分:10
    引用 2 楼 txgaozhao 的回复:
    SQL code
    CREATE PROCEDURE Fr_add
    (
        @userid  INT,
        @username NVARCHAR(50),
        @fid  INT,
        @fname NVARCHAR(50),
    )
    AS
    UPDATE MymyUsers SET
    FId=FId+CAST(@userid AS VARCHAR(20))+',',FName=FName+@username+','
    where UserId=@fid
    GO


    请问这个存储过程哪里出错了??


    SQL code
    CREATE PROCEDURE Fr_add ( @userid INT, @username NVARCHAR(50), @fid INT, @fname NVARCHAR(50) ) AS UPDATE MymyUsers SET FId=FId+CAST(@fid AS VARCHAR(20))+',',FName=FName+@username+',' where UserId=@userid GO


    你贴一下表结构,fid那列是什么类型
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Sandy945
    • 等级:
    发表于:2008-05-11 19:19:589楼 得分:0
    参数和列名是特意没对应的么?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • txgaozhao
    • 等级:
    发表于:2008-05-11 19:20:3810楼 得分:0
    大概的意思是:字段FId=‘132,133,134’
    开始执行更新操作前,我要问问要更新的@userid是否已经包含在FId里,如果包含的话,就不执行,否则就执行
    if CAST(@userid AS VARCHAR(20)) not in (select FId from MymyUsers where UserId=@fid)
    不知道这句话是不是这样子用?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 19:56:0711楼 得分:0
    可以这么用
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 20:20:2112楼 得分:0
    if CAST(@userid AS VARCHAR(20)) not in (select FId from MymyUsers where UserId=@fid)
    begin

    end
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 23:58:2813楼 得分:0
    楼主搞得复杂点了,按你的思路做的话,字段FId=‘132,133,134’ 要改成字段FId=‘132'+','+'133'+','+'134’
    用EXISTS或者是写个SELECT 用@@ROWCOUNT可以解决
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 07:40:2014楼 得分:0
    楼主最好把事情弄清楚再出来,怎么你的int类型总是和varchr类型相加,不知道你是怎么运行成功的,怀疑..............
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 09:04:3715楼 得分:0
    有点迷糊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 09:19:1416楼 得分:0
    if not (select @userid in (select FId from MymyUsers where UserId=@fid)) 
    begin

    end
    或者
    if charindex(cast(@userid as varchar(20)),cast((select top 1 FId from MymyUsers where UserId=@fid) as varchar(20))>0
    begin

    end
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 09:20:4817楼 得分:0
    我没试过啊 错了表怪我
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 09:22:0018楼 得分:0
    学习了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 09:26:4719楼 得分:0
    引用 10 楼 txgaozhao 的回复:
    大概的意思是:字段FId=‘132,133,134’
    开始执行更新操作前,我要问问要更新的@userid是否已经包含在FId里,如果包含的话,就不执行,否则就执行
    if CAST(@userid AS VARCHAR(20)) not in (select FId from MymyUsers where UserId=@fid)
    不知道这句话是不是这样子用?


    FId=‘132,133,134’这样写.not in不会成功的..

    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved