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 展开
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 展开
3个回答
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 行受影响)
展开全部
update 表名 set name = REPLACE(name, 'a', 'b') where root=1;
希望能够帮到你
希望能够帮到你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询