这对于检查Haskell中的多个语句有效吗?或者这有更好的方法吗?
case ((x > -10) && (x < 20),x /= 9,(x `mod` 2) == 0,x) of
(False,_,_,_) -> error "Not in range"
(_,False,_,_) -> error "Must not be 9"
(_,_,False,_) -> error "Must be even"
(True,True,True,10) -> stuff ()
(True,True,True,20) -> stuff ()
_ -> error "Error Message"
Run Code Online (Sandbox Code Playgroud) 我一直在打破这个希望,这是可能的
declare @locationType varchar(50);
declare @SearchTerm NVARCHAR(100);
SELECT column1, column2
FROM whatever
WHERE
CASE @locationType
WHEN 'location' THEN account_location LIKE @SearchTerm
WHEN 'area' THEN Area LIKE @SearchTerm
WHEN 'division' THEN xxx_location_division LIKE @SearchTerm
END
Run Code Online (Sandbox Code Playgroud)
我在这里复制了另一个相关帖子的代码.
我收到错误:
关键字"LIKE"附近的语法不正确.
当我MenuItem选择第一个时,我试图隐藏一个并使另一个可见.
每个的ID是:
pencil: R.id.button_routines_edit
check mark: R.id.button_routines_edit_done
Run Code Online (Sandbox Code Playgroud)
这里有相关代码:
private boolean isEditing = false;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.button_routines_edit:
// hide pencil icon, show checkmark
isEditing = true;
return true;
case R.id.button_routines_edit_done:
// show pencil icon, done editing
isEditing = false;
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// hide pencil when editing and show check mark
menu.findItem(R.id.button_routines_edit).setVisible(!isEditing);
menu.findItem(R.id.button_routines_edit_done).setVisible(isEditing);
return true;
} …Run Code Online (Sandbox Code Playgroud) 我一直想着......
在开关箱区域break;之后需要die()
例:
switch($i){
case 0:
die('Case without break;');
case 1:
die('Case with break;');
break;
}
Run Code Online (Sandbox Code Playgroud) 通常在学校,我们的讲师会告诉我们Default在转换案例陈述的最后总是包含一个陈述.但是,我一直想知道所有(或大多数)场景是否必要?
考虑C++中的以下示例:
int num = rand()%3;
switch (num)
{
case 0: methodOne();
break;
case 1: methodTwo();
break;
case 2: methodThree();
break;
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我觉得不可能有一个> 2或<0的情况,所以我还需要包含一个Default声明吗?
在SO中有类似的问题,需要Default在switch-case中.那里的回复表明我们几乎可以在任何时候包括一个Default.但在我个人遇到的所有情况中,它似乎是多余的,因为Default永远无法达到.
编辑:此外,在防御性编程方面,这种情况需要一个Default声明吗?如果我要添加一个Default声明.这只是一个error-handling声明,我说得对吗?
我是 PostgreSQL 的新手,正在使用 9.4 版。我有一个表,其中收集的测量值作为字符串,需要使用始终是最新的内容(例如 VIEW)将其转换为一种 PIVOT 表。
此外,一些值需要转换,例如乘以 1000,如下面的“sensor3”示例所示。
源表:
CREATE TABLE source (
id bigint NOT NULL,
name character varying(255),
"timestamp" timestamp without time zone,
value character varying(32672),
CONSTRAINT source_pkey PRIMARY KEY (id)
);
INSERT INTO source VALUES
(15,'sensor2','2015-01-03 22:02:05.872','88.4')
, (16,'foo27' ,'2015-01-03 22:02:10.887','-3.755')
, (17,'sensor1','2015-01-03 22:02:10.887','1.1704')
, (18,'foo27' ,'2015-01-03 22:02:50.825','-1.4')
, (19,'bar_18' ,'2015-01-03 22:02:50.833','545.43')
, (20,'foo27' ,'2015-01-03 22:02:50.935','-2.87')
, (21,'sensor3','2015-01-03 22:02:51.044','6.56');
Run Code Online (Sandbox Code Playgroud)
源表结果:
| id | name | timestamp | value |
|----+-----------+---------------------------+----------|
| 15 | …Run Code Online (Sandbox Code Playgroud) 我需要用 CASE 语句评估一个字段。字段名称是 Commodity 并且是一个 varchar(255)。值不同,我需要在特定字符之后从中提取特定部分。字符是“>”。通过使用以下代码,我能够想出我想要在 > 之后返回的值:
SUBSTRING(Commodity, CHARINDEX('>', Commodity) + 2, LEN(Commodity))
Run Code Online (Sandbox Code Playgroud)
但是,我不确定如何将其应用到我的 CASE 语句中。我需要测试是否为空,然后只为它分配一个“无商品”的值。然后我需要测试 > 的存在,然后实现上面的代码以返回值。然后我需要测试什么时候没有 > 但它不为空并且只返回 Commodity 字段的值。
这是我的代码:
SELECT
CASE your_text
WHEN contains('hate') THEN 'hater'
WHEN contains('love') THEN 'lover'
ELSE 'other'
END haterOrLover,
count(*) AS total_count
FROM a_table
GROUP BY haterOrLover
Run Code Online (Sandbox Code Playgroud)
如果只有 contains() 存在就好了!
我想计算有多少个仇恨者、爱好者,结果是这样的:
+--------------+-------------+
| haterOrLover | total_count |
+--------------+-------------+
| hater | 1 |
+--------------+-------------+
| lover | 2 |
+--------------+-------------+
| other | 1 |
+--------------+-------------+
Run Code Online (Sandbox Code Playgroud)
尝试过:
+--------------+-------------+
| haterOrLover | total_count |
+--------------+-------------+
| hater | 1 |
+--------------+-------------+
| lover | 2 |
+--------------+-------------+
| other | 1 |
+--------------+-------------+
Run Code Online (Sandbox Code Playgroud)
WHEN …Run Code Online (Sandbox Code Playgroud) 我想将表达式与 () in 分组case,如下所示:
case a in
'*(a|b)*') printf '%s\n' 'something something';;
esac
Run Code Online (Sandbox Code Playgroud)
但这并没有取得任何成功。我也尝试过:
*(a|b)*
*'('a|b')'*
我都没有成功。
我想写以下内容
CASE [FOO]
WHEN 1 THEN 'YES'
WHEN 0 THEN 'NO'
WHEN NULL THEN 'NO'
END
Run Code Online (Sandbox Code Playgroud)
我当然可以写
CASE
WHEN [FOO] = 1 THEN 'YES'
WHEN [FOO] = 0 OR FOO IS NULL THEN 'NO'
END
Run Code Online (Sandbox Code Playgroud)
反而。
除了风格之外,是否有任何理由(例如性能)更喜欢其中一种?