关于ntext字段的更新问题,急

cmlcm 2005-12-16 03:09:37
问题是这样的,现在我要合并表中名称重复的记录,比如有三条记录名称相同:
proid proname memo(ntext) price
100 XXXVCD <Long Text> 10
101 XXXVCD <Long Text> 20
102 XXXVCD <Long Text> 15
合并为一条记录(比如合并为proid=100的那条记录,其他两条删除),并且在这三条记录中取“memo”字段最长的记录作为新“memo”字段的值
现在的问题是ntext字段的值不可以赋给变量,也不能直接用在
update以及writetext里面,请高手指点,谢谢
...全文
192 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cmlcm 2005-12-16
  • 打赏
  • 举报
回复
能具体点吗
zlp321002 2005-12-16
  • 打赏
  • 举报
回复
--用由游标处理。
cmlcm 2005-12-16
  • 打赏
  • 举报
回复
我研究了一天了,也是卡在writetext的后面那个data参数上了
网上的例子全部是用的常量,晕啊
mislrb 2005-12-16
  • 打赏
  • 举报
回复
哎忙活半天,真不知道怎么根据文本指针返回ntext给变量,哪位高手来帮帮吧,我学习

create table #t(proid int,proname varchar(10), memo ntext, price decimal)
insert #t
select 100,'XXXVCD','select into aaabbb',10 union all
select 101,'XXXVCD','select aaaa into from bbb',20 union all
select 102,'XXXVCD',null,15

declare @newMemo varbinary(16),@oldMemo varbinary(16)

select @newMemo=textptr(memo)
from #t
where proid=(select top 1 proid
from #t
where proname=(select top 1 proname
from #t
where proid='100')
order by datalength(memo) desc
)
select @oldMemo=textptr(memo) from #t where proid='100'

-- READTEXT #t.memo @newMemo 0 0

-- WriteTEXT #t.memo @oldMemo exec('READTEXT t.memo @newMemo 0 0')

--select * from #t where proid='100'

cmlcm 2005-12-16
  • 打赏
  • 举报
回复
谢谢你的恢复,不过
memo不能转换为varchar的,
数据库中memo字段的值最长达到了110多K,
转换后会截断数据的
还有其他方法吗
liujx_1999 2005-12-16
  • 打赏
  • 举报
回复
Create table Tbl(proid int,proname varchar(100),memo ntext,price numeric(18,2))
insert into Tbl(proid ,proname,memo ,price)values (100,'XXXVCD','AAAA',10)
insert into Tbl(proid ,proname,memo ,price)values (101,'XXXVCD','AAAABBBB',20)
insert into Tbl(proid ,proname,memo ,price)values (102,'XXXVCD','AAAABBBCCCCC',50)
insert into Tbl(proid ,proname,memo ,price)values (100,'XXXVCE','AAAA',10)
insert into Tbl(proid ,proname,memo ,price)values (101,'XXXVCE','AAAABBBB',20)
insert into Tbl(proid ,proname,memo ,price)values (102,'XXXVCE','AAAABBBCCCCC',50)
select * from Tbl
select proname,max(cast(memo as varchar(8000) )) as memo into #AA from Tbl group by proname
select min(proid) as proid ,proname into #Temp from Tbl B group by proname
Delete Tbl where proid not in (select proid from #Temp)
update Tbl set memo=B.memo from Tbl A left join #AA B on (A.proname=B.proname)
select * from Tbl
drop table #AA,#Temp
drop table Tbl


代码转载自:https://pan.quark.cn/s/6708bc18cb4a 《Proteus 8.15 SP0:电子电路设计的强大平台》 Proteus 8.15 SP0是一款在电子工程领域享有高度声誉的电子电路设计软件,它在电子工程领域中占据着核心地位。这款专业级别的工具凭借其卓越的功能和用户友好的界面,为工程师们提供了从概念构思到最终实现的完整解决方案。 1. **软件介绍** Proteus 8.15 SP0是由Labcenter Electronics公司研发的一款集成仿真与PCB设计软件。其内部版本编号33980体现了该软件的最新迭代和优化。软件的核心优势在于其一体化的设计平台,能够支持电路设计、模拟仿真、PCB布局以及3D视图预览,显著提升了设计效率。 2. **电路设计与模拟** - **元件资源**:Proteus内置了种类繁多的元件库,涵盖了各类晶体管、电阻、电容、集成电路等,覆盖了数字电路、模拟电路、微控制器等多个技术领域,能够满足不同项目的需求。 - **即时模拟**:用户能够在设计阶段实时监控电路的工作状态,这在调试和验证电路设计时极具价值,减少了制作物理原型的必要性,从而降低了成本。 - **混合仿真模式**:Proteus支持模拟与数字信号的联合仿真,使得复杂的混合系统设计成为可能。 3. **PCB设计** - **布局与布线**:Proteus配备了直观的PCB布局工具,使用户能够轻松调整元件位置,选择自动或手动布线,确保电路的可靠性和可制造性。 - **规则验证**:内置的规则验证功能能够帮助工程师避免违反设计规范,例如间距、过孔尺寸等,保障了PCB设计的质量。 - **三维视图**:独特的三维视图功能使用户能够从多...

22,296

社区成员

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

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