似乎嵌套匹配不起作用,这是一个奇怪的限制.
行为的一个例子如下:
Some(Some(1),2) match {
| case Some(Some(a),b) => a
| case e => e
| }
<console>:9: error: wrong number of arguments for <none>: (x: (Some[Int], Int))Some[(Some[Int], Int)]
case Some(Some(a),b) => a
^
<console>:9: error: not found: value a
case Some(Some(a),b) => a
^
Run Code Online (Sandbox Code Playgroud)
这有效:
Some(Some(1),2) match {
case Some(a) => a match {
case (Some(a),b) => "yay"
case e => "nay"
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我只是一个蠢货还是有更好的方法来实现这一目标?
鉴于字段等于变量,我有一个查询需要能够在正确的位置连接一个字段.
就像是:
CASE WHEN challenges.userID = $var
LEFT JOIN challengesRead ON challenges.userID = challengesRead.userID
CASE WHEN challenges.opponentID = $var
LEFT JOIN challengesRead ON challenges.opponentID = challengesRead.userID
Run Code Online (Sandbox Code Playgroud)
我认为我走在正确的轨道上,但我不确定如何将查询放在一起.谢谢
正如本Meta问题所述,Facebook接受我们密码的完全相反的案例变体.例如:
1.- paSSw5ORD (Original password)
2.- PAssW5ord (Case altered to exact opposite, Capital->Small and vice-versa.)
3.- PaSSw5ORD (Only first letter's case altered)
Run Code Online (Sandbox Code Playgroud)
如何获得第二个变体,前提是第一个变体是原始变体,由用户输入(或者在用户输入第二个版本时获得第一个变体)?这是我对此的看法.
<?php
$pass = "paSSw5ORD"; //Example password
$pass_len = strlen($pass); //Find the length of string
for($i=0;$i<$pass_len;$i++){
if(!(is_numeric($pass[$i]))){ //If Not Number
if($pass[$i]===(strtoupper($pass[$i]))){ //If Uppercase
$pass2 .= strtolower($pass[$i]); //Make Lowercase & Append
} else{ // If Lowercase
$pass2 .= strtoupper($pass[$i]); //Make Uppercase & Append
}
} else{ //If Number
$pass2 .= $pass[$i]; //Simply Append
}
}
//Test both …Run Code Online (Sandbox Code Playgroud) 我有兴趣制作一个案例陈述,从两个不同的列中提取值,其中一个涉及计算.我不知道如何使这个工作,但我会告诉你到目前为止我有什么.(我有一列显示项目类型,例如特殊订单项目,已停产的物品和通常库存的物品.第二列显示现有数量 - 销售订单数量以确定物料是否有库存.)这是我的查询
SELECT ItemID, ItemType, (QuantityOnHand - QuantityonSalesOrders) AS Instock
CASE
WHEN ItemType = 'SP / OR' THEN 'Special Order'
WHEN Instock < '1' THEN 'Out of Stock'
WHEN Instock > '0' THEN 'In Stock'
AS "Stock" FROM peachtree;
Run Code Online (Sandbox Code Playgroud) 我正在尝试在MySQL中构建一个查询,我有一个数字库存水平的东西,并根据库存水平,我希望它返回另一个颜色代码值.
例如,如果库存水平<0,那么EMPTY如果库存水平介于0和1000之间则为红色,如果库存水平介于1000和5000之间,则为黄色,如果库存水平介于5000和10000之间,则为绿色,如果库存水平> 10000,则绿色.
所以这是我的榜样.我有一个啤酒桌,上面有关于啤酒的信息和一个持有股票价值的BeerStock表.
SELECT Beer.Beer, Beer.Brewery, Beer.Style, Beer.ABV, Beer.Hops, Beer.SRM,
Sum(BeerStock.Quantity)
FROM Beer, BeerStock
Where Beer.Beer = BeerStock.Beer
Run Code Online (Sandbox Code Playgroud)
这会给我这样的事情:
Beer1 Brewery1 Style1 5%, 3, 10, 1238
Run Code Online (Sandbox Code Playgroud)
而且我要
Beer1 Brewery1 Style1 5%, 3, 10, 1238 YELLOW
Run Code Online (Sandbox Code Playgroud)
我似乎无法解决这个问题,我应该使用CASE还是可以使用IF/THEN类型的东西?
我的SQL技能很生疏,通常我使用Access并搞乱自动生成的SQL,而不是从头开始编写......我可以应对MySQL的基础知识但不是这种东西!
任何建议/指针赞赏....
谢谢
安迪
嗨,我有一个用户可以选择的实体表,我还有另一个表,其中包含有关用户最喜欢的实体的信息.看到:
表Entity:
id | ...
Run Code Online (Sandbox Code Playgroud)
表SavedEntity:
id | entity_id | user_id
Run Code Online (Sandbox Code Playgroud)
我希望结果如下:
entity_id | ... | favourite
Run Code Online (Sandbox Code Playgroud)
我的问题是如何更改我的查询获取所有实体,并添加一个额外的字段是boolean实体是否是用户的最爱的值?
我已经看过使用(或模仿!)a FULL JOIN但这似乎不必要地复杂,我无法让它工作,我已经看了CASE关键字,但我再次没有运气.
这种多对多的表结构是相当标准的我相信所以我确信有一种获取所需信息的标准方法,任何人都可以帮我弄清楚我缺少的东西吗?
NB我正在使用CodeIgniter和我的查询的活动记录,但我可以解决vanilla SQL问题.
假设我有一张桌子:
当前表格:
title_id title_name title_qty
1 A.I. Artificial Intelligence 2
2 Batman Begins 40
3 2012 7
4 101 Dalmatians 23
5 Act of Valor 1
6 Batman 50
7 20 Million Miles to Earth 340
Run Code Online (Sandbox Code Playgroud)
我希望得到一个输出:
期望的输出:
title_id title_name title_qty title_char
4 101 Dalmatians 23 #
7 20 Million Miles to Earth 340 #
3 2012 7 #
1 A.I. Artificial Intelligence 2 A
5 Act of Valor 1 A
6 Batman 50 B
2 Batman Begins 40 B …Run Code Online (Sandbox Code Playgroud) 我有一个包含CASE表达式语句的过程,如下所示:
BEGIN
....
WHILE counter < total DO
....
CASE ranking
WHEN 1 OR 51 OR 100 OR 167 THEN SET
project_name = 'alpha';
WHEN 2 THEN SET
project_name = 'beta';
WHEN 10 OR 31 OR 40 OR 61 THEN SET
project_name = 'charlie';
....
ELSE SET
project_name = 'zelta';
END CASE;
INSERT INTO project (id, name) VALUES (LAST_INSERT_ID(), project_name);
SET counter = counter + 1;
END WHILE;
END
$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
当我调用上述过程时,OR将完全跳过包含语句的案例,或者仅匹配列表中的第一项.我究竟做错了什么?
我在SQL Server中有表的值,例如:
1
2
2
2
1
2
Run Code Online (Sandbox Code Playgroud)
我想计算有多少次1有价值,所以我的例子的查询结果应该是2
我试试
count (case status_d when 1 then 1 end) as COUNT_STATUS_1
Run Code Online (Sandbox Code Playgroud)
但结果是4,而不是2
我想执行一个SELECT,它只在表中存在该列时才选择一个列值,否则显示为null.
这就是我目前正在做的事情:
SELECT TOP 10 CASE WHEN EXISTS
(SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA ='test' and TABLE_NAME='tableName' and COLUMN_NAME='columnName')
THEN columnName ELSE NULL END AS columnName
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
SELECT TOP 10 CASE WHEN
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA ='test' and TABLE_NAME='tableName' and COLUMN_NAME='columnName') >0
THEN columnName ELSE NULL END AS columnName
Run Code Online (Sandbox Code Playgroud)
如果列中存在列,则它们都能很好地工作.但是当列不存在时,它会给我错误:
列名称'columnName'无效
case ×10
mysql ×6
sql ×3
sql-server ×2
codeigniter ×1
count ×1
expression ×1
extractor ×1
facebook ×1
left-join ×1
php ×1
scala ×1
scala-option ×1
select ×1
sql-like ×1
string ×1
subquery ×1
union ×1