Sql查询时like语法中的中文问题(50分)

  • 主题发起人 主题发起人 老高
  • 开始时间 开始时间

老高

Unregistered / Unconfirmed
GUEST, unregistred user!
我在用Delphi3.0时,用了如下形式的语句:
select *
from notitle.db
where description like '%value%' 时,value若是字母,
则结果正确,若为中文,则绝大多数出现错误,不知是何原因?
 
把%value%用个变量替换试试
select * from notitle.db where description like :abc
 
字符集对吗?
 
我用d4试了一下,并无问题。
 
我觉得是正确的,不过当数据库为中文字段名时,sql有时出错。
 
使用变量,
sqlstring:=value;
select *
from notitle.db
where description like "%'+sqlString+'%"'
 
我觉得是标点符号的问题,当切换到中文输入状态
时,处于全角状态,SQL语句不认全角状态的‘或%,
不信,You'd better have a try !
 
冒昧的问一句,Like是什么作用?我对SQL不是很在行。 :-)
 
我同意王寒松和yanb的说法
 
其实,这和数据库也有很大关系,例如,InforMix 如果用
BDE的Informix SQL Link 连接, SQL语句中的有中文就会报
非法字符错(中文标记为注释除外),

我在青岛的报表系统深受其害,我不得不用参数传递方式.即
Another_Eyes提出的方法. 
奇怪的是用ODBC的连接就可以用中文.
 
老兄,好好检查一下服务端的字符集吧!
设成936(简体中文)
 
如果你用的是paradox7的话,会出现不认汉字的问题,
用paradox4.5建表试试看。
 
我认为什么问题也没有,也许是您测试出错了!
或者是您的delphi出问题了!
 
同意Another_eYes的观点
用个变量替换试试
 
我正巧碰到过这类问题.
问题可能出现在引号上(我也想不到), 单引号替换成双引号试试, 也许有个惊喜.
我是在用ms sql server时无意发觉的.
不小心把个字符串的单引号写成了双引号. 运行时BDE报错, 找不到变量(变量名就是字符串中的
内容, 不幸正巧是中文的). 修改时只是把引号改了就正确了.

建议: 有关中文的字符串(不是指字段名)最好用变量方式.
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
446
import
I
I
回复
0
查看
493
import
I
后退
顶部