sql语句问题,字符串替换问题

表格idnameroot1a02a113a214a31我传入@id,@name两个参数,首先找到id=@id的记录(id是主键),找到记录的name值a,然后将所有roo... 表格

id name root
1 a 0
2 a1 1
3 a2 1
4 a3 1

我传入@id,@name两个参数,
首先找到id=@id的记录(id是主键),找到记录的name值a,
然后将所有root=@id记录的name前面为a的部分用@name替换掉,也就是如果@id=1,@name='b',表格更新成:
id name root
1 b 0
2 b1 1
3 b2 1
4 b3 1
展开
 我来答
匿名用户
2013-06-03
展开全部
CREATE TABLE testA (
  id  INT,
  name  varchar(10),
  root  INT
);
go


INSERT INTO testA
SELECT  1,  'a',    0  UNION  ALL
SELECT  2,  'a1',   1  UNION  ALL
SELECT  3,  'a2',   1  UNION  ALL
SELECT  4,  'a3',   1;
GO


CREATE PROCEDURE Test_Rename
  @id  INT,
  @name  varchar(10)
AS
BEGIN
  -- 定义变量, 暂存旧数据.
  DECLARE @oldName  varchar(10);
  -- 根据 @id 查询旧数据.
  SELECT @oldName = name FROM testA WHERE id = @id;
  -- 如果数据不存在, 直接返回.
  IF @@rowcount = 0 
  BEGIN
    RETURN;
  END;
  
  -- 更新根节点.
  UPDATE testA SET  name = @name WHERE id = @id;
  
  -- 更新子节点.
  UPDATE testA SET  name = REPLACE(name, @oldname, @name)  WHERE root = @id;

END;
GO


-- 测试执行
EXECUTE Test_Rename  1,  'B';
GO


-- 数据核对.
SELECT * FROM testA
GO


id          name       root
----------- ---------- -----------
          1 B                    0
          2 B1                   1
          3 B2                   1
          4 B3                   1

(4 行受影响)
csliang34
2013-06-03 · TA获得超过120个赞
知道答主
回答量:34
采纳率:0%
帮助的人:17.4万
展开全部
update 表名 set name = REPLACE(name, 'a', 'b') where root=1;
希望能够帮到你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
6rl
2013-06-03 · TA获得超过704个赞
知道小有建树答主
回答量:580
采纳率:66%
帮助的人:377万
展开全部
repalce 函数 有什么问题?
追问
能详细写出来吗,我是sql语句新手~
追答
你想做存储过程,还是块
-------------------------------------
sql字符替换函数replace

Replace:用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。

语法

Replace ( 'string_expression1' , 'string_expression2' ,
'string_expression3' )

参数:

'string_expression1'

待搜索的字符串表达式。string_expression1 可以是字符数据或二进制数据。

'string_expression2'

待查找的字符串表达式。string_expression2 可以是字符数据或二进制数据。

'string_expression3'

替换用的字符串表达式。string_expression3 可以是字符数据或二进制数据。

返回类型

如果 string_expression(1、2 或 3)是支持的字符数据类型之一,则返回字符数据。如果 string_expression(1、2
或 3)是支持的 binary 数据类型之一,则返回二进制数据。

示例:

下例用 xxx 替换 abcdefghi 中的字符串 cde。

SELECT REPLACE('abcdefghicde','cde','xxx')

GO

下面是结果集:

abxxxfghixxx

(1 row(s) affected)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式