【发布时间】:2015-10-22 17:12:42
【问题描述】:
我有一个实例,有时我们不确定是否按名称文本或名称 ID 进行过滤。我已经用案例陈述和isnumeric 解决了这个问题。例如,我们同时拥有 id 和 name 值,但我们不确定要求过滤哪一列。 rtresource.id 是数字,在这种情况下,我们可以使用值 '183'。如果rtresource.rname (varchar) 正在尝试过滤,那么我们就有那个 id 'Jane Thompson' 的 rname。
所以过滤器是
rtresource.id=183
或者
rtresource.rname='Jane Thompson'
反而变成了
rtresource.rname in (CASE IsNumeric(rtresource.rname) WHEN 1 then '183' else 'Jane Thompson' End)
这很棒。问题是传递了一组以上的 id/rname。通常,我们会询问rtresource.id in (183, 23) or rtresource.rname in ('Jane Thompson','John Doe')。如何用 case 语句解决这个问题?
rtresource.rname in (CASE IsNumeric(rtresource.rname) WHEN 1 then ('183','23') else ('Jane Thompson','John Doe') End)
上面抱怨值之间的逗号。我也试过:
rtresource.rname in (CASE IsNumeric(rtresource.rname) WHEN 1 then ('183'+','+'23') else ('Jane Thompson'+','+'John Doe') End)
这也不起作用。想法?感谢您提前提供任何帮助。
【问题讨论】:
-
rtresource.id in (183, 23) or rtresource.rname in ('Jane Thompson','John Doe')..这不是过滤器吗?为什么需要case表达式? -
我真的很惊讶“这太棒了”,因为你的问题被标记为 MySQL 并且 MySQL 中没有
IsNumeric()函数。 -
@GordonLinoff..它是
mysqli