我正在尝试在Progress SQL中做这样的事情(这不是POSTGRES!)
SELECT
CASE WHEN code LIKE '%foo%' THEN 'Y' ELSE 'N' END as foo
FROM
bar
Run Code Online (Sandbox Code Playgroud)
但是Progress不支持LIKE运算符.INSTR看起来它可能会完成这项工作,但它是一个Progress扩展,我正在使用的数据库不支持.是否有另一种使用标准ODBC函数实现此目的的方法?
谢谢
我正在尝试从ERP系统的会计年度表中更新日期维度表.如果我运行以下查询:
SELECT fcname FYName
,min(fdstart) YearStart
,max(fdend) YearEnd
,max(fnnumber) PeriodCount
FROM M2MData01.dbo.glrule GLR
GROUP BY fcname
Run Code Online (Sandbox Code Playgroud)
我得到以下数据:
FYName YearStart YearEnd PeriodCount
FY 2000 1/1/2000 12:00:00 AM 12/31/2000 12:00:00 AM 12
FY 2001 1/1/2001 12:00:00 AM 12/31/2001 12:00:00 AM 12
FY 2002 1/1/2002 12:00:00 AM 12/31/2002 12:00:00 AM 12
FY 2003 1/1/2003 12:00:00 AM 12/31/2003 12:00:00 AM 12
FY 2004 1/1/2004 12:00:00 AM 12/31/2004 12:00:00 AM 12
FY 2005 1/1/2005 12:00:00 AM 12/31/2005 12:00:00 AM 12
FY 2006 1/1/2006 12:00:00 AM …Run Code Online (Sandbox Code Playgroud) 伙计们,
最近开始学习C.
陷入困境.它关于switch-case语句的工作.
这是代码:
#include<stdio.h>
int main() {
int i=4;
switch(i) {
default :
printf("%s","Default");
case 0:
printf("%s","Case 0");
case 1:
printf("%s","Case 1");
case 2:
printf("%s","Case 2");
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
我个人认为," Default"应该打印,因为它与任何案例值都不匹配.
但是当我在Turbo C中运行代码时,我观察到的是:
Default
Case 0
Case 1
Case 2
Run Code Online (Sandbox Code Playgroud)
在这里观察到同样的情况:http://www.ideone.com/pFh1d
问题是什么 ?这是编译器问题或我的代码中的任何错误?
编辑:
PS:如果我必须首先编写默认案例,它会造成什么错误.有害吗?
但是一旦编译器知道它必须执行默认语句,为什么我们需要在默认情况的语句之后放置一个break语句?
我尝试了以下方法:
intType = typeOf (5::Int)
stringType = typeOf "s"
dynFunc :: Dynamic -> IO ()
dynFunc d =
case dynTypeRep d of
stringType -> polyFunc ((fromDyn d "") :: String)
intType -> polyFunc ((fromDyn d 0) :: Int)
_ -> error "Could not coerce dynamic value"
Run Code Online (Sandbox Code Playgroud)
但它警告重叠模式匹配并且不能正常工作.它始终是第一个模式而不是正确模式.
我在查询时遇到了一些麻烦。如果遇到案例,我想加入表格。这是我正在使用的查询。我对这些案例陈述有点陌生,因此非常感谢任何帮助!
SELECT
conversation.c_id,
conversation.user_one,
conversation.user_two,
users.name,
users.lastName
FROM `conversation`
CASE
WHEN conversation.user_one = 1
THEN
INNER JOIN `users`
ON conversation.two = users.id
WHEN conversation.user_two = 1
THEN
INNER JOIN `users`
ON conversation.user_one = users.id
END CASE
WHERE `user_one` = 1 OR `user_two` = 1
Run Code Online (Sandbox Code Playgroud) 我正在尝试将%{{x, y} => [items]}一堵带有墙壁的房间涂成地图,并且正在使用一个案例声明来确定要绘制哪种类型的墙壁。
但是,尝试进行模式匹配并将其分配pos给左侧的值很困难。(引发illegal pattern编译错误)
我知道我可以阻止分配^,但是我该怎么办(from_y+sizey)呢?
def place_room({from_x, from_y}, {size_x, size_y}, original_map) do
Enum.reduce from_x..(from_x + size_x-1), original_map, fn x, map ->
Enum.reduce from_y..(from_y + size_y-1), map, fn y, map ->
pos = {x, y}
case pos do
{from_x, from_y} ->
place(map, pos, :wall, %{type: :room_wall_tl})
{from_x, (from_y+size_y)} ->
place(map, pos, :wall, %{type: :room_wall_tr})
{from_x, (from_y+size_y)} ->
place(map, pos, :wall, %{type: :room_wall_bl})
{(from_x+size_x), (from_y+size_y)} ->
place(map, pos, :wall, %{type: …Run Code Online (Sandbox Code Playgroud) 在 elm (0.18) 中有没有办法将一系列做同样事情的 case 表达式组合在一起?
例如:
type Character
= Sleepy
| Happy
| Grumpy
| Dopey
| Sneezy
| Bashful
| Doc
| SnowWhite
| Queen
getKindOfCharacter : Character -> String
getKindOfCharacter character =
case character of
(Sleepy | Happy | Grumpy | Dopey | Sneezy | Bashful | Doc) ->
"Dwarf"
SnowWhite ->
"Hero"
Queen ->
"Villain"
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用依赖于变量的 case 语句来确定我的 WHERE 子句的一部分,但它不喜欢我在做什么。这是我的查询(为简单起见进行了修改)
DECLARE @SalesType VARCHAR(10)
SET @SalesType = 'Bulk'
SELECT CASE
WHEN fwsf.Customer_Cardlock_Customer = 'True'
THEN 'CFN'
ELSE 'Bulk'
END AS 'Prod Type'
FROM TABLE t
WHERE CASE
WHEN @SalesType = 'Bulk' then t.customer_type = 'False'
WHEN @SalesType = 'CFN' then t.customer_type = 'True'
End
Run Code Online (Sandbox Code Playgroud)
换句话说,我想在 WHERE 子句中声明,当 @SalesType 是给定值时,选择具有另一个值的行。
编辑:为了其他人,我意识到我有另一种情况,我可能需要选择“全部”选项。根据下面的 Shawn,他用我验证过的以下内容更正了我最初提出的解决方案:
AND t.customer_type =
CASE @SalesType
WHEN 'Bulk' then 'False'
WHEN 'CFN' then 'True'
WHEN 'All' then t.customer_type
END
END
Run Code Online (Sandbox Code Playgroud) 我有一个类似于的自定义数据类型:
data Token = Number Int
| Otherthings
Run Code Online (Sandbox Code Playgroud)
我希望能够以一种方式使用"数字"而在另一种方式中使用其他东西.所以我可以成功创建一个case语句,如:
parse x = case x of
Number y -> y
Run Code Online (Sandbox Code Playgroud)
然后成功地采取:
let x = Number 7 in parse x
Run Code Online (Sandbox Code Playgroud)
并评估为7.但是,当我尝试将"解析"功能更改为:
parse [] = []
parse (x:xs) = case x of
Number y -> y
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Couldn't match expected type `[a0]' with actual type `Int'
In the expression: y
In a case alternative: Number y -> y
In the expression: case x of { Number y -> y }
Run Code Online (Sandbox Code Playgroud)
为什么这不能以这种方式工作以及解决这个问题的正确方法是什么?非常感谢!
这是我的表结构。
===================================
main_section | currency | amount
===================================
Tender INR 2000
Bank USD 3000
Tender INR 1500
Tender INR 1850
===================================
Run Code Online (Sandbox Code Playgroud)
我试图做一个CASE语句,如果'main_section = tender',它应该退还投标金额,如果银行,则应该退还该银行金额。如果有多个记录,则应求和并返回金额(此处“投标”具有多个记录)。谁能帮我这个。以下是我尝试过的案例陈述
CASE sum(com_payments.main_section
WHEN com_payments.main_section = 'Tender'
THEN main_tender = com_payments.amount
END AS maintender1)
CASE sum(com_payments.main_section
WHEN com_payments.main_section = 'Bank'
THEN main_bank = com_payments.amount
END AS mainbank1)
Run Code Online (Sandbox Code Playgroud)