DECLARE @TestVal int
SET @TestVal = 5
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
ELSE 'Other'
END
Run Code Online (Sandbox Code Playgroud)
我在网上看到了这个示例代码,但我找不到一个没有表达式的示例,并且它有多个WHEN,所以我想知道这种类型的东西是否正常:
DECLARE @TestVal int
SET @TestVal = 5
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
WHEN (select ...) = 1 THEN 'Other Value'
WHEN (select ...) = 2 THEN 'Other Value 2'
ELSE 'Other'
END
Run Code Online (Sandbox Code Playgroud)
或者我是否需要为每一行说CASE WHEN?
嗨我使用转换为带开关的字符串的枚举,但它不起作用.它给出了编译错误:无法将类型'userControl_commontop.UserType'隐式转换为'string'
代码是:
private void CommonTopChangesnew(string usertype)
{
switch (usertype.Trim().ToUpper())
{
case UserType.NORMAL :
hlkSAD.Enabled = false;
hlkMRTQuery.Enabled = false;
hlkReqViewer.Enabled = false;
hlkSendnotif.Enabled = false;
break;
case UserType.POWER :
hlkSAD.Enabled = false;
hlkReqViewer.Enabled = false;
hlkSendnotif.Enabled = false;
break;
}
}
enum UserType
{
NORMAL,
POWER,
ADMINISTRATOR
}
Run Code Online (Sandbox Code Playgroud) 我有这个功能:
void ToUpper(char * S)
{
while (*S!=0)
{
*S=(*S >= 'a' && *S <= 'z')?(*S-'a'+'A'):*S;
S++;
}
}
Run Code Online (Sandbox Code Playgroud)
*S!= 0是什么意思,它应该是null吗?
是否可以通过使用子句中CASE表达式的结果表达式(weight_class)来过滤SQL Server中的记录WHERE?我无法让它工作,因为我收到一个错误说:
列名称'weight_class'无效
码:
SELECT
first_name, last_name,
weight_class = CASE
WHEN weight < 172 THEN 'Welterweight'
WHEN weight <= 192 THEN 'Middleweight'
WHEN weight <= 214 THEN 'Light heavyweight'
WHEN weight <= 220 THEN 'Cruiserweight'
ELSE 'Heavyweight'
END
FROM
athletes
Run Code Online (Sandbox Code Playgroud)
这就是我想要做的:
SELECT
first_name, last_name,
weight_class = CASE
WHEN weight < 172 THEN 'Welterweight'
WHEN weight <= 192 THEN 'Middleweight'
WHEN weight <= 214 THEN 'Light heavyweight'
WHEN weight <= 220 THEN 'Cruiserweight'
ELSE 'Heavyweight'
END
FROM …Run Code Online (Sandbox Code Playgroud) 我有以下查询:
SELECT *
FROM dbo.tblOrders o
WHERE o.OrderId IN (SELECT [Value] FROM [dbo].[udf_GenerateVarcharTableFromStringList](@OrderId, ','))
AND
@ActiveInactive =
CASE
WHEN 'Active' THEN (o.[orderactivedate] > o.[orderinactivedate])
WHEN 'Inactive' THEN (o.[orderactivedate] < o.[orderinactivedate])
END
Run Code Online (Sandbox Code Playgroud)
这回来了
An expression of non-boolean type specified in a context where a condition is expected, near 'THEN'.
Run Code Online (Sandbox Code Playgroud)
我怎么能让这个工作?如果参数为"活动",则返回具有以下条件的记录?
请考虑 :
Subsets[Flatten[ParallelTable[{i, j}, {i, 1, 96}, {j, 1, 4}], 1], {4}]
Run Code Online (Sandbox Code Playgroud)
我需要选择所有子列表,使得i值在4的每个子列表中永远不会相同
{{1,1},{1,2},{2,3},{ ,1}}应该被拒绝.我重复2次的值1.
我知道我可以用案例来做这件事,但是不理解它的语法,并且发现与其潜在应用相比,案件的帮助相当空洞.
是否可以在交换机/案例结构中使用OR语句?假设我想点击两个不同的项目时做同样的事情.
我试过了
(case R.id.bOne || case R.id.tvOne):
Run Code Online (Sandbox Code Playgroud)
和
case (R.id.bOne || R.id.tvOne):
Run Code Online (Sandbox Code Playgroud)
但它们似乎都不起作用..
我想在C++的switch/case语句中使用const int数组.可能吗?到目前为止,我尝试过类似的东西:
int main()
{
int const tab[3] = {1,2,3};
int value(2);
switch(value)
{
case tab[1]:
cout << "result is: " << tab[0]<< endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然而,编译器一直告诉我:
.../main.cpp|11|error: the value of ‘tab’ is not usable in a constant expression
Run Code Online (Sandbox Code Playgroud)
我把我的数组声明为"int const",这还不够吗?
我有此case语句,该语句给出错误“变量constant1未使用”。似乎是忽略变量并返回顶行,因此变量显然没有作用域。如果我将常数替换为数字1,那么它将起作用。在Elixir中做到这一点的最佳方法是什么?
defmodule Main
do
def constant1, do: 1
def constant2, do: 1
def constant3, do: 1
x = 1
y = 0
z = 0
{a, b, c, d} =
case {x, y, z} do
{constant1, constant2, constant3} -> {1, 2, 3, 4}
{constant1, constant2, _} -> {5, 6, 7, 8}
{constant1, _, _} -> {9, 10, 11, 12}
{_, _, _} -> {13, 14, 15, 16}
end
IO.inspect {a, b, c, d}
end
Run Code Online (Sandbox Code Playgroud)
这是输出:
warning: variable constant1 is unused …Run Code Online (Sandbox Code Playgroud) 我怎么能用或创建案例?
就像是:
string str;
case (str)
"abc" || "dfg": begin
//some code
end
"yfg": begin
//some code
end
default: //some code
endcase
Run Code Online (Sandbox Code Playgroud)