就是在插入数据的时候,对某一字段进行验证,如果发现有非法字符用设定好的字符替换 比如插入的字符是:"美女我爱你" 就用女生把美女替换。 并且在整个插入的字段开头和末尾各加一段文字 文字为固定的 想到是用触发器 求个实例吧  
如表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 运算符中不兼容。函数,触发器,或者触发器调用函数都可以 只要实现功能就行  

解决方案 »

  1.   

    楼主最好不用TEXT类型,很麻烦的,最好用NVARCHAR(MAX)
      

  2.   

    呵呵 Dlut_LIuQ 速度好快    因为这个是该别人的东西 只有数据库 没代码  而且还不能改变数据库的字段  所以有点麻烦啊 
      

  3.   


    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
    endinsert 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