继续上一帖 插入表时在某个字段的开头和末尾加一段文字?

j_hunter 2011-01-05 07:46:42
就是在插入数据的时候,对某一字段进行验证,如果发现有非法字符用设定好的字符替换 比如插入的字符是:"美女我爱你" 就用女生把美女替换。 并且在整个插入的字段开头和末尾各加一段文字 文字为固定的 想到是用触发器 求个实例吧
如表A
id name des
1 张三 美女我爱你
2 李四 我爱美女
插入后
id name des
1 张三 可爱的 女生我爱你 嫁给我吧
2 李四 可爱的 我爱美女 嫁给我吧
http://topic.csdn.net/u/20110105/14/c17f1f91-dd6f-49d2-9b18-8bc8eda94b4d.html

这是上一帖地址 和需求
现在改为: 每次替换多个字符 且des的数据类型为Text类型

如表A
id name des
1 张三 美女我爱你
2 李四 我爱美女

用女生替换美女 用love替换爱
插入后
id name des
1 张三 漂亮的 女生我love你 嫁给我吧
2 李四 漂亮的 我love女生 嫁给我吧

上贴中 Dlut_LIuQ的方法是对的 但是des的数据类型改成Text后执行会有错误 :
数据类型 text 和 varchar 在 add 运算符中不兼容。

函数,触发器,或者触发器调用函数都可以 只要实现功能就行
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
j_hunter 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dlut_liuq 的回复:]
SQL code

create table tb
(
id int,
name nvarchar(25),
des text
)
--替换字符表
CREATE TABLE KEYWORD
(
A NVARCHAR(10),
B NVARCHAR(10),
C NVARCHAR(10),
D NVARCHAR(10),
)
……
[/Quote]
我试试 希望不会错
飘零一叶 2011-01-05
  • 打赏
  • 举报
回复

create table tb
(
id int,
name nvarchar(25),
des text
)
--替换字符表
CREATE TABLE KEYWORD
(
A NVARCHAR(10),
B NVARCHAR(10),
C NVARCHAR(10),
D NVARCHAR(10),
)
INSERT INTO KEYWORD
SELECT '美女','女生','爱','love'


CREATE trigger tri_tb on tb
instead of insert
as
begin
SELECT * INTO #t FROM inserted

update a set a.des='可爱的'+REPLACE(REPLACE(CAST(des AS VARCHAR(8000)),A,B),C,D)+'嫁给我吧'
from #t a join KEYWORD b on charindex(b.A,cast(a.des as varchar(8000)))>0 OR charindex(b.C,cast(a.des as varchar(8000)))>0
--des不能超过8000长度 否则报错。
insert into tb
select * from #t
end

insert into tb
select 1,'张三','美女我爱你' union all
select 2,'李四','我爱美女' UNION ALL
SELECT 3,'LL','WADAD'

select * from tb
-------------------
id name des
1 张三 可爱的女生我love你嫁给我吧
2 李四 可爱的我love女生嫁给我吧
3 LL WADAD
j_hunter 2011-01-05
  • 打赏
  • 举报
回复
呵呵 Dlut_LIuQ 速度好快

因为这个是该别人的东西 只有数据库 没代码 而且还不能改变数据库的字段 所以有点麻烦啊
飘零一叶 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 j_hunter 的回复:]
就是在插入数据的时候,对某一字段进行验证,如果发现有非法字符用设定好的字符替换 比如插入的字符是:"美女我爱你" 就用女生把美女替换。 并且在整个插入的字段开头和末尾各加一段文字 文字为固定的 想到是用触发器 求个实例吧
如表A
id name des
1 张三 美女我爱你
2 李四 我爱美女
插入后
id name des
1 张三 可爱的 女生我爱……
[/Quote]
楼主最好不用TEXT类型,很麻烦的,最好用NVARCHAR(MAX)

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧