【发布时间】:2012-03-12 21:00:52
【问题描述】:
SELECT iif( LIKE(sol,'EM06%'), "other",sol) as solGroup;
FROM dpgift GROUP BY solGroup
上面应该给我一个包含唯一 sol 值的列。此外,任何以 EM06 开头的 sol 值都应归入“其他”。但它不起作用,而是返回以下内容。
Solgroup
DM081
EM061
EM081
EM100
EM101
EM105
EM111
TM081
谁能看到我在这里做错了什么?第 2 行和第 3 行应称为“其他”。
我已经多次使用过这样的命令,以前从未这样做过。我看不出语法有什么问题,我尝试了其他变体但没有成功。我什至尝试过强制转换,以防某个字段类型不起作用但结果始终相同。
编辑:使用“*”并将通配符字符串作为第一个参数有效。我实际上以以下方式犯了这个错误一段时间:
iif( (LIKE("4%",sol) OR sol = "4"),"8M","other");
like 在这里什么都不做,但我没有注意到,因为如果 sol 以 '4' 开头,'=' 运算符返回 true(有人可以链接我对 '=' 行为的引用吗?)。我包含sol = "4" 的原因是因为我假设 % 表示一个或多个字符而不是 0 或更多。
不管怎样,我已经回去把我所有的代码都改成了iif(like("wtvr*",string),stringtrue,stringfalse)
我想不推荐使用 '=' 来比较字符串,因为 msdn 库中似乎没有提到它。
【问题讨论】:
-
也许你在
EM之前有一个字符,如果你这样做iif( LIKE(sol,'%EM06%'), "other",sol)会发生什么 -
我也试过了,没用。
标签: sql tsql sql-like visual-foxpro