SQL2000 的简单的莫名其妙问题(50)

  • 主题发起人 主题发起人 wlyft
  • 开始时间 开始时间
W

wlyft

Unregistered / Unconfirmed
GUEST, unregistred user!
有个字段是 nvarchar 3我insert can 这三个字母进去,会出现太长insert 不进去而改成 nvarchar 6时就能insert 进去但查的时候 where airco='can'或where ltrim(rtrim(airco))='can' 都查不到非要 airco like '%can%'才能查到语句是这样的 close; sql.Clear; sql.add('insert into airYmoney(startdate,enddate,startair,endair,ymoneny,airco) values('); sql.add(''''+trim(maskedit1.Text)+''','''+trim(maskedit2.Text)+''','''+trim(edit1.Text)); sql.add(''','''+trim(edit2.Text)+''','''+trim(edit3.Text)+''','''+trim(edit17.Text)+''')'); ExecSQL;同一个数据库别的表就不会出现这种问题,如nvarchar 6 我inser abcdef 这6个字符进去就不会显示太长录不进,也可以 where airco='abcdef'查找得到这是怎么回事?我搞了好几天一直没搞懂
 
update tableName set columnName = rtrim(ltrim(replace(columnName ,char(10),'')))用这个数据库去掉换行符后就可以用=号查找得到数据了可是,我用一样的insert 语句录入数据时不存在这个问题,用这个切会出现这种问题trim不能去掉换行符?太奇怪了,我的录入框edit的Edit1KeyDown事件写成if chr(key)=#13 then edit2.SetFocus ;但另一个也是这样写的,为什么就不会出现这种问题呢??奇怪
 
不管三七二十一,改为varchar(3)试试。
 
不管三七二十一,改为varchar(3)试试。 真理
 
我经常这样使用,没有碰到你的问题。按楼上的解决吧。
 
我已经自已解决了 sql.add(''''+trim(maskedit1.Text)+''','''+trim(maskedit2.Text)+''','''+trim(edit1.Text)); sql.add(''','''+trim(edit2.Text)+''','''+trim(edit3.Text)+''','''+trim(edit17.Text)+''')');是错的要 sql.add(''''+trim(maskedit1.Text)+''','''+trim(maskedit2.Text)+''','''+trim(edit1.Text)+''''); sql.add(''','''+trim(edit2.Text)+''','''+trim(edit3.Text)+','''+trim(edit17.Text)+''')');这样才不会产生换行符
 
你还不如这样写sql.text := sql.text + QuotedStr(trim(maskedit1.Text)) + ',' +QuotedStr(trim(maskedit2.Text)) +',' +QuotedStr(trim(edit1.Text));
 
多人接受答案了。
 
后退
顶部