小弟求助如何合并列,SQL Server2008

我这现在有一个Instrucments表,有InBrand列(徕卡)InClass列(TS02),InAccuracy列(2"),InType列(全站仪)我以前有一个InName列有数据,现在想将InName列中内容改为“徕卡TS02-2"全站仪"也就是讲InBrand/InClass/InAccuracy/InType列合并起来,我的这些列都是text数据类型,求教大神如何合并,谢谢
...全文
170 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2013-09-17
  • 打赏
  • 举报
回复
错误提示已经很明显,nvarchar和ntext不兼容,所以才要你下面那句convert,nvarchar和ntext都是字符串,但是内部机制有点不同,而且ntext特讨厌,问题很多,以后设计的时候还是尽量避免吧
引用 5 楼 xydf_1992 的回复:
[quote=引用 4 楼 hdhai9451 的回复:] 这几个字段数据类型要一样(同时是varchar,text或nvarchar,ntext),inbrand,inclass,inaccuracy,intype 然后再用转换函数,才可以相加
create table T(id int,aaa ntext,bbb nvarchar(1000))
go

insert into T values(1,N'AAAAAAAAAAAAAAAAAAAAAA','MMMMMMMMMMMMMMMMM')
select aaa+bbb  
from T
/*
Msg 402, Level 16, State 1, Line 1
The data types ntext and nvarchar are incompatible in the add operator.
*/
select convert(nvarchar(max),aaa)+bbb 
from T
/*
AAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMMMMMM
*/


drop table T
这样还能是合并的文字么?我需要text文本合并啊 这是我改的代码
create table Instrument(id int,InBrand ntext,InClass nvarchar(1000))
go

insert into Instrument  values(1,N'徕卡','TS02')
select InBrand+InClass  
from Instrument
/*
Msg 402, Level 16, State 1, Line 1
The data types ntext and nvarchar are incompatible in the add operator.
*/
select convert(nvarchar(max),InBrand)+InClass 
from Instrument
/*
AAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMMMMMM
*/


drop table Instrument
然后就提示 消息 402,级别 16,状态 1,第 3 行 数据类型 ntext 和 nvarchar 在 add 运算符中不兼容。 [/quote]
Andy__Huang 2013-09-16
  • 打赏
  • 举报
回复
这几个字段数据类型要一样(同时是varchar,text或nvarchar,ntext),inbrand,inclass,inaccuracy,intype 然后再用转换函数,才可以相加
create table T(id int,aaa ntext,bbb nvarchar(1000))
go

insert into T values(1,N'AAAAAAAAAAAAAAAAAAAAAA','MMMMMMMMMMMMMMMMM')
select aaa+bbb  
from T
/*
Msg 402, Level 16, State 1, Line 1
The data types ntext and nvarchar are incompatible in the add operator.
*/
select convert(nvarchar(max),aaa)+bbb 
from T
/*
AAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMMMMMM
*/


drop table T
  • 打赏
  • 举报
回复
引用 4 楼 hdhai9451 的回复:
这几个字段数据类型要一样(同时是varchar,text或nvarchar,ntext),inbrand,inclass,inaccuracy,intype 然后再用转换函数,才可以相加
create table T(id int,aaa ntext,bbb nvarchar(1000))
go

insert into T values(1,N'AAAAAAAAAAAAAAAAAAAAAA','MMMMMMMMMMMMMMMMM')
select aaa+bbb  
from T
/*
Msg 402, Level 16, State 1, Line 1
The data types ntext and nvarchar are incompatible in the add operator.
*/
select convert(nvarchar(max),aaa)+bbb 
from T
/*
AAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMMMMMM
*/


drop table T
这样还能是合并的文字么?我需要text文本合并啊 这是我改的代码
create table Instrument(id int,InBrand ntext,InClass nvarchar(1000))
go

insert into Instrument  values(1,N'徕卡','TS02')
select InBrand+InClass  
from Instrument
/*
Msg 402, Level 16, State 1, Line 1
The data types ntext and nvarchar are incompatible in the add operator.
*/
select convert(nvarchar(max),InBrand)+InClass 
from Instrument
/*
AAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMMMMMM
*/


drop table Instrument
然后就提示 消息 402,级别 16,状态 1,第 3 行 数据类型 ntext 和 nvarchar 在 add 运算符中不兼容。
發糞塗牆 2013-09-16
  • 打赏
  • 举报
回复
对于text的类型,先convert(varchar(max),列名)后再相加试试
  • 打赏
  • 举报
回复
引用 1 楼 ian_ism 的回复:
select inbrand+inclass+'-'+inaccuracy+'"'+intype+'"' from Instrucments
我用的SQL Server2008,数据类型text不能直接相加 消息 8117,级别 16,状态 1,第 1 行 操作数数据类型 text 对于 add 运算符无效。
ian_ism 2013-09-15
  • 打赏
  • 举报
回复
select inbrand+inclass+'-'+inaccuracy+'"'+intype+'"' from Instrucments

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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