ISNULL(dj_note, '') + "已红冲" = ?(100分)

  • 主题发起人 主题发起人 xWolf
  • 开始时间 开始时间
X

xWolf

Unregistered / Unconfirmed
GUEST, unregistred user!
sp中:
Insert Into wz_wzckpsd(dj_id,dj_no,dj_note,ishcdj,zje)
SELECT @new_id,dj_no,ISNULL(dj_note, '') + "已红冲",1,zje*(-1)
FROM wz_wzckpsd WHERE dj_id=@dj_id

为什么
ISNULL(dj_note, '') + "已红冲"
得到的是 ''
 
忘了说明: dj_note is NULL
 
没听说过的,哪里的函数?
 
Null用+号得到的都是Null,所以使用其他连接字符函数。(我对MS SQL 7不熟,不知
到连接字符函数)
 
在Oracle8i中
select nvl(null,'')+'shen' from dual;
Output:
{null}


select nvl(null,'')||'shen' from dual;
Output:

shen

使用ISNULL(dj_note, '') 得到NULL(可能是''Mssql认为是NULL)
 
MS SQL 7好象没有字符连接函数(除+)

try
Insert Into wz_wzckpsd(dj_id,dj_no,dj_note,ishcdj,zje)
SELECT @new_id,dj_no,ltrim(ISNULL(dj_note, ' ') + "已红冲"),1,zje*(-1)
FROM wz_wzckpsd WHERE dj_id=@dj_id
 
沈前卫说得对
Null用+号得到的都是Null,
Null+1=Null
 
USE master
GO
sp_dboption 'DBName','contat null yields null','false'
GO
数据库选项 contat null yields null 为true 时,连接运算一个为NULL,结果即为
NULL
设为false即可

 
ISNULL(dj_note, '')
如果dj_note=NULL,那么返回的应该是''而不是NULL吧?
 
你运行
SELECT ISNULL(dj_note, '') + "已红冲"
FROM wz_wzckpsd
试试,我的sql上运行好像没问题,结果是"已红冲"
 
问题已经解决,
Insert Into wz_wzckpsd(dj_id,dj_no,dj_note,ishcdj,zje)
SELECT @new_id,dj_no,ISNULL(dj_note, '') + "已红冲",1,zje*(-1)
FROM wz_wzckpsd WHERE dj_id=@dj_id
会报错: String or binary data will be truncated
改为LTRIM(ISNULL(dj_note, '') + "已红冲")就OK了
谢谢大家


 
多人接受答案了。
 
后退
顶部