有一个实例,我的过滤器被动态插入到我的SQL查询中,有时无法告诉它们<tr style="background-color:yellow">
<td style="color:red font-weight:bold">
SERVER1
</td>
<td style="color:red">
Sampler
</td>
<td style="color:red">
Offline
</td>
<td style="color:red">
No
</td>
</tr>
还是int
。有没有办法允许使用varchar
语句?
在我的表格(CASE WHEN
for entity)中,列公司是字符串/ ent
,varchar
列是entid
。我似乎无法让这个int
语句适用于int是过滤器或字符串是过滤器的情况。
这有效:
CASE IsNumeric
这是不正在工作:
select
ent.company
from
ent
where
ent.company in
(CASE
WHEN IsNumeric(CONVERT(VARCHAR(100), 'ABIS, Inc.')) = 0
THEN CONVERT(VARCHAR(100), 'ABIS, Inc.')
ELSE '99'
END,
CASE
WHEN IsNumeric(CONVERT(VARCHAR(100), 'Schulte Building Systems')) = 0
THEN CONVERT(VARCHAR(100), 'Schulte Building Systems')
ELSE '1423'
END)
...但是对于int等于如果我将0更改为1则可以工作(如果我使用公司等于,则不返回任何内容)。知道为什么会失败吗?
答案 0 :(得分:0)
解决了它。我从来没有问过实际的列 - 只是过滤器。
select ent.entid, ent.company from ent where
ent.entid in
(
CASE IsNumeric(entid) WHEN 1 then '99' else 'ABIS, Inc.' End,
CASE IsNumeric(entid) WHEN 1 then '1423' else 'Schulte Building Systems' End
)
和
select ent.entid, ent.company from ent where
ent.company in
(
CASE IsNumeric(company) WHEN 1 then '99' else 'ABIS, Inc.' End,
CASE IsNumeric(company) WHEN 1 then '1423' else 'Schulte Building Systems' End
)
都工作。