标签: case-statement

SQL Server - 如何在两个可能的SELECT语句之间切换

我想在我的mssql存储过程中使用一个参数来在小的和详细的结果之间切换(出于可维护性,性能和网络负载的原因).

如果参数设置为1,我将获得所有列,否则只有一个或两个最重要的列.它的工作方式非常有限:

ALTER PROCEDURE [dbo].[GetAllUsers]
 @detail BIT
AS
 IF @detail = 1 SELECT UserName, Title, UserID FROM Users
 ELSE SELECT Username FROM Users
Run Code Online (Sandbox Code Playgroud)

但我想使用合并的WHEN子句.以下是我尝试过的,但这不起作用.

ALTER PROCEDURE [dbo].[GetAllUsers]
 @detail BIT
AS
 CASE @detail
    WHEN 1 THEN SELECT UserName, Title, UserID
    ELSE SELECT UserName END
    FROM Users
    WHERE UserID < 5
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这样的事情?

sql select stored-procedures case-statement

1
推荐指数
2
解决办法
1364
查看次数

Sql Server:与NULL比较时,CASE语句执行意外行为

鉴于:

以下Select语句:

select case NULL
       when NULL then 0
       else 1
       end
Run Code Online (Sandbox Code Playgroud)

问题:

我希望这会返回0,但它返回1.什么给出?

sql sql-server null case-statement

1
推荐指数
1
解决办法
3477
查看次数

为什么这个Ruby case语句在与||一起使用时返回"无法将nil转换为String(TypeError)"?

我最初将此代码编写为一系列if语句,但在了解了更多关于Ruby的决定之后,决定一个case语句可能更合适.然而,现在它似乎被打破了,我不知道为什么.

location = gets.chomp.downcase

case location
when 'v' || 'vaca'
  file1, file2 = 'vMasterLocation.csv', 'vMasterSR.csv'
when 'c' || 'comm'
  file1, file2 = 'cMasterLocation.csv', 'cMasterSR.csv'
else
  puts "Not a valid location."
  exit
end
Run Code Online (Sandbox Code Playgroud)

声明运行正常时location的输入或者是V,v,C,或c,但每当我试着输入vacacomm红宝石返回以下内容:csv.rb:1335:in 'initialize': can't convert nil into String (TypeError)

我使用||不正确或者我误解了案例陈述吗?任何反馈都非常感谢.谢谢!

这里它的形式if仅作为参考:

location = gets.chomp.downcase
if location == 'v' || location == 'vaca'
  file1, file2 = 'vMasterLocation.csv', …
Run Code Online (Sandbox Code Playgroud)

ruby syntax case-statement

1
推荐指数
1
解决办法
935
查看次数

where子句中的CASE语句使用等于和IN

WHERE CONDITION1='ABC'
AND Status =
    CASE  @Option 
            WHEN 1 THEN 'True'
            WHEN 2 THEN 'False'
            WHEN 3 THEN  NULL
            WHEn 4 THEN **IN ('True', 'False', NULL)**
    END
Run Code Online (Sandbox Code Playgroud)

如何编写查询,我的第一个选项直接匹配,= 但我的最后一个选项需要一个IN

上面的查询给出了错误,但我想要类似的东西,我无法找到.

sql case-statement in-clause sql-server-2008

1
推荐指数
2
解决办法
1万
查看次数

Bash case 语句:检索有效选项列表?

有什么方法可以检索 case 语句中的选项列表?例如,如果我有这个代码:

tool=$1

case ${tool} in 
     brdf)
        # Do stuff
        ;;
     drift)
        # Do other stuff
        ;;
     *)
        echo "ERROR: I don't know this tool. Valid options are: brdf, drift"
        exit 1
        ;;
esac
Run Code Online (Sandbox Code Playgroud)

这很容易阅读,但是在从列表中添加/删除工具时,错误消息很容易过时,因为我还需要记住更改那里的名称。

使用这样的数组可以避免重复:

tool=$1

validtools=(brdf drift)

case ${tool} in
     ${validtools[0]})
           # Do stuff
           ;;
     ${validtools[1]})
           # Do other stuff
           ;;
     *)
           echo "ERROR: I don't know this tool. Valid options are: ${validtools[@]}"
           exit 1
           ;;
esac
Run Code Online (Sandbox Code Playgroud)

但这读起来非常糟糕,无论如何,使用硬编码的数组索引来维护会更糟。

有没有一种好的方法可以做到这一点,也许是一些检索可用选项列表的变量或命令,或者我是否只需要记住在添加新选项时更新错误消息?

bash case-statement

1
推荐指数
1
解决办法
1686
查看次数

Haskell中的可变变量和case语句

所以我不确定我想要的是否实际上是一个可变变量,但它与它相似.

我基本上想要这样做:

case thing of
    True -> p <- func
    False -> p <- otherFunc
return Record {program=p, otherFields=oF}
Run Code Online (Sandbox Code Playgroud)

我有什么方法可以做那样的事情?我已经让我的函数返回一个IO记录,所以尝试将返回放在case语句中,但是我的最后一行需要返回它,但事实并非如此.

haskell mutable case-statement switch-statement

1
推荐指数
1
解决办法
181
查看次数

SQL CASE语句

SQL Server 2000中是否可以使用以下命令?

CREATE FUNCTION getItemType  (@code varchar(18))
RETURNS int
AS
BEGIN
Declare @Type tinyint
Select @Type = case len(@code)
WHEN 12,14,17 THEN 1
WHEN 13,15,18 THEN 2
WHEN 8,10 THEN 3
ELSE  0
END
RETURN (@Type)
END
Run Code Online (Sandbox Code Playgroud)

谢谢.

sql sql-server sql-server-2000 case-statement

0
推荐指数
1
解决办法
5245
查看次数

PHP函数错误在写上下文中不能使用函数返回值 - 返回数组的函数.大脑慢慢爆发

我正在调用一个返回数组的函数,但我遇到了这个错误:在写上下文中不能使用函数返回值

很多人都会遇到这个错误,但我看不出我做错了什么.

这是功能:

function select_image_styles_from_category($category)
{
$image_details();
switch($category)
{
    case 'twine':
            $image_details[0] = get_bloginfo('template_directory') . '/images/titles/blog-twine.png';
            $image_details[1] = 'on-top';
            break;
    case 'scrapbook':
            $image_details[0] = get_bloginfo('template_directory') . '/images/blog/papers.png';
            $image_details[1] = 'on-top';
            break;
    default:
            $image_details[0] = 'stuff';
            $image_details[1] = 'things';
}

return $image_details;

}
Run Code Online (Sandbox Code Playgroud)

然后我从另一个函数调用这个函数,这就是它出错的行(这个函数还有更多,但它对于问题的其余部分来说是多余的):

function add_img_styles_to_special_categories($the_content_string, $category)
{
        //erroring line
    $image_details() = select_image_styles_from_category($category);
}
Run Code Online (Sandbox Code Playgroud)

我错过了演员吗?我需要显式构造一个数组吗?我是否提出了案件陈述?我真的看不出我错过了什么.你们这些华丽的小伙子有什么指针吗?

php function case-statement switch-statement

0
推荐指数
1
解决办法
571
查看次数

用字符串切换

不知何故,我的switch语句没有通过我的任何案例,但它不应该进入一个?(我使用/sf/answers/281048701/作为参考).

没有输出,应用程序被阻止后.

#include <stdio.h>

#include <stdlib.h>

#define BADKEY -1
#define string1 1
#define string2 2
#define string3 3
#define string4 4
char *x = "string1";

typedef struct {char *key; int val; } t_symstruct;

static t_symstruct lookuptable[] = {
    { "string1", string1 }, { "string2", string2 }, { "string3", string3 }, { "string4", string4 }
};

#define NKEYS (sizeof(lookuptable)/sizeof(t_symstruct))

int keyfromstring(char *key) {
    int i;
    for (i=0; i < NKEYS; i++) {
        t_symstruct *sym = lookuptable + i;
        printf("before: …
Run Code Online (Sandbox Code Playgroud)

c case-statement switch-statement

0
推荐指数
1
解决办法
358
查看次数

在VB.NET中使用ElseIf或Case语句

是否有任何一般性能指导用于何时使用Case而不是链ElseIf

请考虑以下示例......

        Dim lobjExample As Object = GetARandomDataTypeCrapExample()
        If lobjExample Is GetType(Boolean) Then
            ' Solve world hunger here 
        ElseIf lobjExample Is GetType(Byte) Then
            ' Solve world hunger here 
        ElseIf lobjExample Is GetType(Char) Then
            ' Solve world hunger here 
        ElseIf lobjExample Is GetType(Date) Then
            ' Solve world hunger here 
        ElseIf lobjExample Is GetType(Decimal) Then
            ' Solve world hunger here 
        ElseIf lobjExample Is GetType(String) Then
            ' Solve world hunger here 
        ElseIf lobjExample Is GetType(Integer) Then
            ' Solve world …
Run Code Online (Sandbox Code Playgroud)

vb.net performance if-statement case-statement

0
推荐指数
1
解决办法
1063
查看次数

iSeries DB2 SQL - 使用CASE语句在UDF中更新变量

我正在尝试为DB2创建用户定义的函数,但无法弄清楚.我对t-sql感觉更舒服,这将以十几种方式实现.我需要帮助,因为我收到的所有内容都是神秘的错误消息,告诉我没有有效的令牌或其他类似的令牌.

基本前提是我试图将正常日期转换为整个数据库中使用的日期格式(cyymmdd)这里是伪代码:

Get current time;
If YEAR(current time) > 1999 then 1 else 0;
Run Code Online (Sandbox Code Playgroud)

很简单吧?无法让它发挥作用.这是实际的代码:

DECLARE Cn CHAR ( 1 ) ;
CASE
WHEN YEAR(X) > 1999
THEN SET Cn = 1;
ELSE SET Cn = 0;
Run Code Online (Sandbox Code Playgroud)

还尝试过:

DECLARE Cn CHAR ( 1 ) ;
CASE YEAR(X)
WHEN  > 1999
THEN SET Cn = 1;
ELSE SET Cn = 0;
Run Code Online (Sandbox Code Playgroud)

而那应该是悲惨的失败.

我真的不知道如何只用SQL将3/25/2014转换为1140325.我想我可以在应用程序逻辑中处理这个问题,但这不是我想要的方式.

提前致谢.

sql db2 user-defined-functions case-statement ibm-midrange

-1
推荐指数
1
解决办法
1912
查看次数