我需要在MonetDB中做这样的事情:
select
If(value > 0, value, -1) as selected_value
from
table
Run Code Online (Sandbox Code Playgroud)
在mysql中,这意味着'如果值> 0则返回值,否则返回-1.' 在MonetDB中是否有与此相同的功能?
我不是在寻找案例陈述.我知道它存在于MonetDB和其他sql语言中.我想特别知道我给出的例子.
谢谢
据我所知,在MonetDB中没有与此相同的功能.
if()函数是MySQL Extensions to Standard SQL的一部分,但是这个扩展不是monet内置函数的一部分
像许多其他SQL数据库一样,monetdb中也没有'IF()'函数,因为它不是标准SQL语言的一部分.
我知道你不是在寻找一个案例陈述,无论如何,根据SQL中的一个Nutshell:ANSI SQL2003提供了一个名为CASE的函数,可用于在查询或更新语句中创建IF-THEN流控制逻辑.
CASE函数在SELECT或UPDATE语句中提供IF-THEN-ELSE功能.它评估条件列表并从几个可能的值中返回一个值.
CASE有两个用法:简单和搜索.简单CASE表达式将一个值input_value与其他值列表进行比较,并返回与第一个匹配值关联的结果.搜索的CASE表达式允许分析几个逻辑条件并返回与第一个相关的结果,该结果为真.
monetdb支持的功能包括:
因此,在我看来,最好的机会是编码''布尔搜索操作'是:
SELECT
CASE WHEN value > 0 THEN value ELSE -1 END AS selected_value
FROM
table;
Run Code Online (Sandbox Code Playgroud)
此外 ,关于flowcontrol的monetdb dcumentation报告它允许'CASE WHEN'和'if THEN ELSE'以及SQL标准允许创建SQL函数,而MonetDB有这种支持.
我想,但我不鼓励也不测试,你可以定义自己的功能; 类似的东西:
CREATE FUNCTION MY_CONV(value int)
RETURNS int
BEGIN
IF (value > 0)
THEN RETURN value
ELSE RETURN -1;
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
于是
SELECT MY_CONV(value) FROM table;
Run Code Online (Sandbox Code Playgroud)
更复杂的可能是尝试编写UserDefinedFunction