开发者社区> 问答> 正文

就像在CASE语句中一样,未按预期评估

给定此数据:

CREATE TABLE tmpTable(
fldField varchar(10) null);

INSERT INTO tmpTable
SELECT 'XXX'
UNION ALL 
SELECT 'XXX'
UNION  ALL
SELECT 'ZZZ'
UNION  ALL
SELECT 'ZZZ'
UNION  ALL
SELECT 'YYY'

SELECT
CASE WHEN fldField like 'YYY' THEN 'OTH' ELSE 'XXX' END AS newField
FROM tmpTable

预期的结果集是:

XXX
XXX
XXX
XXX
OTH

什么情况会导致SQL Server 2000找不到“ YYY”?并返回以下结果集:

XXX
XXX
XXX
XXX
XXX

问题出在“ YYY”之类,我发现了其他编写方法来使其工作,但我想知道为什么这种精确方法不起作用。另一个困难是,它在我的大多数SQL Server 2000环境中都有效。我需要找出它们之间的不同之处。谢谢你的帮助。

展开
收起
心有灵_夕 2019-12-29 00:19:51 947 0
1 条回答
写回答
取消 提交回答
  • 检查您的服务包。将我的SQL 2000 box升级到SP4之后,我现在可以根据您的情况获得正确的值。

    我仍然得到我在较早的文章中报告的交换数据:(

    如果这样做,SELECT @@version您应该得到8.00.2039。任何小于该版本的版本号,都应安装SP4。

    2019-12-29 00:20:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
面向失败设计 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载