关于T-sql 里 like 的用法??

coollele 2008-11-10 05:38:14
关于T-sql 语法

select top 20 *
from sale_list
where sale_number in (select sale_number from sale_total)
and (sale_code like '200811521182%' or sale_number like '200811521182%' or sale_adder like '0%' or op like '200811521182%') order by sale_date desc

以上相同的语句运行于 sql2000 与 sql2005 相同数据的数据库中;结果不一样??

*** ★ sql2000中会将 like 模糊查询的结果显示出来;而sql2005查不出结果 null

用SQL2005来执行查询时,检查语法通过后,会将代码改为以下的代码,执行后什么都没有;

SELECT TOP 20 id, sale_number, sale_code, sale_name, sale_yprice, sale_discount, sale_price, sale_count, sale_date,
create_date, sale_adder, op
FROM sale_list
WHERE (sale_number IN
(SELECT sale_number
FROM sale_total)) AND (sale_code LIKE '200811521182%') OR
(sale_number IN
(SELECT sale_number
FROM sale_total AS sale_total_3)) AND (sale_number LIKE '200811521182%') OR
(sale_number IN
(SELECT sale_number
FROM sale_total AS sale_total_2)) AND (sale_adder LIKE '0%') OR
(sale_number IN
(SELECT sale_number
FROM sale_total AS sale_total_1)) AND (op LIKE '200811521182%')
ORDER BY sale_date DESC







请问?/??

是不是我哪错了,还是有别的写法? 又或是两个数据库的方法不一样???


请指教????
...全文
346 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
chendi0301 2009-01-10
  • 打赏
  • 举报
回复
我没碰到这个情况,还是来顶一下
昵称被占用了 2008-11-18
  • 打赏
  • 举报
回复
这里都是数字,所以应该没有大小写敏感问题

估计是相关字段的数据类型问题,这些字段可能都是数字字段

对于数字字段,尽量不要用like 查询,必须用like 查询的时候,显式转换下类型

比如
sale_number like '200811521182%'
改成
cast(sale_number as varchar(30)) like '200811521182%'
CodeShow 2008-11-18
  • 打赏
  • 举报
回复
看到头晕眼花了
zdgood 2008-11-15
  • 打赏
  • 举报
回复
你可以把2005中变化后的语句放到2000中运行试试,看看结果一样吗?
niedx2007 2008-11-14
  • 打赏
  • 举报
回复
请教各位,如何像百度那样从书的数据库表中实现模糊查询:比如输入:" C 精髓 教程 "从数据库中就能把含有上面关键字的书全部找出来,注意字符串中间是有空格的,个数不定,谢谢
sqn1982 2008-11-10
  • 打赏
  • 举报
回复
逻辑没问题
等不到来世 2008-11-10
  • 打赏
  • 举报
回复
语法没错误,数据有问题。
ws_hgo 2008-11-10
  • 打赏
  • 举报
回复
把表结构
贴出来
做下
幸运的意外 2008-11-10
  • 打赏
  • 举报
回复
SQL 2005区分大小写,注意一下.确保大小写正确再试试看.
dobear_0922 2008-11-10
  • 打赏
  • 举报
回复
代码没有错误,应该是两个库数据不同
rucypli 2008-11-10
  • 打赏
  • 举报
回复
你count一下表中数据是否一样多
hyde100 2008-11-10
  • 打赏
  • 举报
回复
貌似逻辑没有错误,检查两个数据库数据
水族杰纶 2008-11-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 coollele 的帖子:]
关于T-sql 语法

select top 20 *
from sale_list
where sale_number in (select sale_number from sale_total)
and (sale_code like '200811521182%' or sale_number like '200811521182%' or sale_adder like '0%' or op like '200811521182%') order by sale_date desc

以上相同的语句运行于 sql2000 与 sql2005 相同数据的数据库中;结果不一样??

*** ★ sql2000中会将 like 模糊查询的结果显示出来;而sql2…
[/Quote]
確定兩個數據庫中的表中數據一致?字段類型一致?
nalnait 2008-11-10
  • 打赏
  • 举报
回复
可能是有null的情况,你这样:


select top 20 *
from sale_list
where sale_number in (select sale_number from sale_total)
and (isnull(sale_code,'') like '200811521182%' or isnull(sale_number,'') like '200811521182%' or isnull(sale_adder,'') like '0%' or isnull(op,'') like '200811521182%') order by sale_date desc

Tomato77 2008-11-10
  • 打赏
  • 举报
回复
逻辑没问题

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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