SQL_server的数据类型 text 和 varchar 在 add 运算符中不兼容,text 类型的数据后面加字符内容

工作中 碰到了这么一个问题,软件权限码是TEXT类型的数据,要在原有权限的基础上,给每个人增加一个固定的权限值,

这就难倒我了?1,

  1. 试试 update ……好吧,提示错误信息

        代码: update ccode set usedbcodestr = usedbcodestr + ';188'

       

  2. 这可如何是好?求助我们百度大明白吧,结果就是一路向坑,坑的我不要不要的,大多数人都是说要写个T-SQL 语句块,我还真写了,但是结果……命令行执行完成,但是却对表没有任何修改,一顿操作猛如虎,定神一看原地杵……

    DECLARE @ptrval binary(16)
    SELECT @ptrval = TEXTPTR(备注) from 教师表
    UPDATETEXT 教师表.备注 @ptrval null 0 'bbbb'
    end   DECLARE @ptr binary(16)  

    DECLARE @val nvarchar ( 100 )
    SET @val = 'sssss'
    SELECT @ptr = TEXTPTR (备注) FROM 教师表  --WHERE id=2
    UPDATETEXT 教师表.备注 @ptr null 0 @val-------------id=2的 content的尾部加上@val

    UPDATETEXT aa.content @ptr 0 0 @val-------------id=2的 content的头部加上@val

  3. 最终解决的结果请注意:!!!!注意,由于text类型的数据不允许进行直接的字符串连接操作,所以要先用cast函数将其转换为varchar 类型,再进行运算  

    update ccode set usedbcodestr  = cast(usedbcodestr as varchar) +';188'

  4. 特别注意,cast()函数默认会截断长字符,如果原来的串很长了,再从后面加字符,就要给varchar设置长度,避免截断的问题出现 

update ccode set usedbcodestr  = cast(usedbcodestr as varchar(1000)) +';188'

       

 

你可能感兴趣的:(数据库)