日期:2014-05-17  浏览次数:20635 次

ASP在MSSQL数据库中查询不了
本帖最后由 dh2981 于 2013-09-13 10:16:35 编辑
set rs_t=server.CreateObject("ADODB.recordset")
TXT0="房"
TXT1="1";
sql="SELECT  [LOCATION] FROM [PWNT].[dbo].[READER] where [LOCATION] like '%"&TXT0&"%'"   

rs_t.open sql,conn,1,3
do while not rs_t.eof
      response.Write(rs_t("LOCATION"))    
rs_t.movenext
loop
rs_t.close
set rs_t=nothing

比如数据表里[LOCATION]中有内容:“1号房,2号房,3号房……20号房”
如果用TXT0 字符串 查询,得不出任何数据。
如果用TXT1 数字类型 查询,就会得出“1号房、10号房……19号房”
[LOCATION] 在MSSQL中定义为nvarchar(64)
为什么会这样?
在网页上查是这样的结果,但是在数据库的查询分析器中都是有数据的。
数据 select sql ASP 定义

------解决方案--------------------
try this,

set rs_t=server.CreateObject("ADODB.recordset")
TXT0="房"
TXT1="1";
sql="SELECT [LOCATION] FROM [PWNT].[dbo].[READER] where charindex(N'" & TXT0 & "',[LOCATION],1)>0 "
 
rs_t.open sql,conn,1,3
do while not rs_t.eof
      response.Write(rs_t("LOCATION"))    
rs_t.movenext
loop
rs_t.close
set rs_t=nothing

------解决方案--------------------
READER.LOCATION字段是nvarchar(64),
查询时须在查找字符串前加"N",指定为unicode数据.