Mysql SQL大小写是否为带多个值的数字?

Mysql SQL大小写是否为带多个值的数字?,mysql,sql,case,isnumeric,Mysql,Sql,Case,Isnumeric,我有一个例子,有时我们不确定是否要按名称文本或名称id进行过滤。我用case语句和isnumeric解决了这个问题。例如,我们有id和name两个值,但我们不确定要过滤哪个列rtresource.id是数字,在本例中,我们使用值'183'。如果rtresource.rname(varchar)正在尝试筛选,那么我们就有了id为“Jane Thompson”的rname 因此该过滤器为 rtresource.id=183 或 rtresource.rname='Jane Thompson' 变

我有一个例子,有时我们不确定是否要按名称文本或名称id进行过滤。我用case语句和
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。通常,我们会询问(183,23)中的
rtresource.id或('Jane Thompson','John Doe')中的rtresource.rname
。我如何用案例陈述来解决这个问题

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)

这也不行。思想?提前感谢您的帮助。

您必须为列表中的每个值重复
案例:

where rtresource.rname in (
  CASE IsNumeric(rtresource.rname) WHEN 1 then '183' else 'Jane Thompson' End,
  CASE IsNumeric(rtresource.rname) WHEN 1 then '23' else 'John Doe' End
)
或者,由于值不相交,只需:

where rtresource.rname in (183, 23, 'Jane Thompson', 'John Doe')

这将更好地执行,因为它将使用列的索引(如果有),并且更易于编码、理解和缩放。

您必须对列表中的每个值重复
大小写:

where rtresource.rname in (
  CASE IsNumeric(rtresource.rname) WHEN 1 then '183' else 'Jane Thompson' End,
  CASE IsNumeric(rtresource.rname) WHEN 1 then '23' else 'John Doe' End
)
或者,由于值不相交,只需:

where rtresource.rname in (183, 23, 'Jane Thompson', 'John Doe')

这将更好地执行,因为它将使用列的索引(如果有),并且更容易编码、理解和缩放。

找到了它。跳过该案例,而是:

(IsNumeric(rtresource.rname)=1,rtresource.rname位于('183','23')) 或
(IsNumeric(rtresource.rname)!=1和rtresource.rname在('Jane Thompson','John Doe'))

找到了答案。跳过该案例,而是:

(IsNumeric(rtresource.rname)=1,rtresource.rname位于('183','23')) 或
(IsNumeric(rtresource.rname)!=1和rtresource.rname in('Jane Thompson','John Doe'))

rtresource.id in(183,23)或rtresource.rname in('Jane Thompson','John Doe')
。这不能用作过滤器吗?你为什么需要一个
case
表达式?我真的很惊讶“这真是太棒了”,因为你的问题被标记为MySQL,而MySQL中没有
IsNumeric()
函数。@GordonLinoff.。它是(183,23)中的
mysqli
rtresource.id或('Jane Thompson','John Doe')中的rtresource.rname
。这不起过滤器的作用吗?你为什么需要一个
case
表达式?我真的很惊讶“这真是太棒了”,因为你的问题被标记为MySQL,而MySQL中没有
IsNumeric()
函数。@GordonLinoff..它是
mysqli