标签: case

带有LIKE运算符的Select语句中的MySQL Case

是否可以在MySQL 语句中组合CASE语句和LIKE运算符SELECT

例如,我试图查询一个数据库,该数据库以两种格式之一存储单个列中的数据(这很糟糕并且伤害了我的头脑,但我无法更改数据,所以它就是它.).所以有时列numbers会有像"6901xxxxxxxx"这样的数据,有时会有像"91xxxxxxxxxxx"这样的数据.

我想做的是像这样查询数据 -

SELECT
    CASE digits
      WHEN LIKE "6901%" THEN substr(digits,4)
      WHEN LIKE "91%" THEN substr(digits,2)
    END as "digits",
FROM raw
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,但我希望它可能.

mysql case

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

案例表达与案例陈述

MySQL中的Case表达式Case语句有什么区别?什么时候可以使用它们,使用一个优于另一个有什么好处?

案例陈述语法:

CASE
  WHEN search_condition THEN statement_list
  [WHEN search_condition THEN statement_list] ...
  [ELSE statement_list]
END CASE
Run Code Online (Sandbox Code Playgroud)

案例表达式语法:

CASE 
  WHEN [condition] THEN result 
  [WHEN [condition] THEN result ...] 
  [ELSE result] 
END
Run Code Online (Sandbox Code Playgroud)

这些看起来几乎相同,但案例陈述的初始描述是这样的 The CASE statement for stored programs implements a complex conditional construct.

那么在存储程序中使用一个并且在普通查询中不可用的重要区别是什么?我在我正在玩的查询中尝试了这个,但它失败了 - sqlfiddle.如果是这种情况,为什么不在存储的程序中使用Case Expression?

还有其他任何语法差异需要注意,因为它们看起来完全相同吗?

mysql case

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

如果在SELECT语句中进行比较,则使用TSQL CASE

我想在SELECT中使用CASE语句.

我从用户表中选择,并且(作为一个属性)我也使用嵌套SQL:

SELECT 
   registrationDate, 
   (SELECT COUNT(*) FROM Articles WHERE userId = Users.userId) as articleNumber, 
   hobbies, ...
FROM USERS
Run Code Online (Sandbox Code Playgroud)

然后我想做一个CASE语句来获得用户的排名(排名取决于articleNumber).

我试过这样的:

SELECT 
   registrationDate, 
   (SELECT COUNT(*) FROM Articles WHERE Articles.userId = Users.userId) as articleNumber, 
   ranking =
      CASE
         WHEN articleNumber < 2 THEN 'Ama'
         WHEN articleNumber < 5 THEN 'SemiAma' 
         WHEN articleNumber < 7 THEN 'Good'  
         WHEN articleNumber < 9 THEN 'Better' 
         WHEN articleNumber < 12 THEN 'Best'
         ELSE 'Outstanding'
      END,
   hobbies, etc...
FROM USERS
Run Code Online (Sandbox Code Playgroud)

解析显示没有错误,但当我尝试运行它时,我收到错误:

消息207,级别16,状态1,过程GetUserList,行XY
无效列名称'articleNumber'.

我想,CASE不会"识别"我的嵌套SELECT.

我帮助自己使用其他一些解决方案,如 SQL Server 2008 …

sql t-sql select case sql-server-2008

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

有哪些不同的案例?

我对不同类型的标识符案例感兴趣,以及人们称之为什么.您是否知道此列表或其他替代名称的任何添加内容?

  • myIdentifier:Camel case(例如java变量名)
  • MyIdentifier:资本驼峰案例(例如在java类名称中)
  • my_identifier:Snake case(例如python变量名)
  • my-identifier:烤肉串案例(例如球拍名称)
  • myidentifier:扁平案例(例如java包名称)
  • MY_IDENTIFIER:大写(例如以C常量名称)

naming camelcasing case

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

正则表达式改为判刑案件

我正在使用Notepad ++在5453行语言文件中进行一些文本替换.文件行的格式为:

variable.name = Variable Value Over Here, that''s for sure, Really
Run Code Online (Sandbox Code Playgroud)

双撇号是故意的.

我需要将值转换为句子大小写,除了"Here"和"Really"这两个词是正确的并且应该保持大写.如您所见,值中的大小写通常是混合开始的.

我已经做了一段时间了.我到目前为止所有的是:

 (. )([A-Z])(.+)
Run Code Online (Sandbox Code Playgroud)

这似乎至少选择了正确的字符串.替换件是我在努力的地方.

regex case notepad++

40
推荐指数
3
解决办法
4万
查看次数

Bash案例语句中的正则表达式

我正在使用以下脚本,它使用case语句来查找服务器.

    #!/bin/bash
SERVER=$1;
echo $SERVER | egrep "ws-[0-9]+\.host\.com";
case $SERVER in
ws-[0-9]+\.host\.com) echo "Web Server"
;;
db-[0-9]+\.host\.com) echo "DB server"
;;
bk-[0-9]+\.host\.com) echo "Backup server"
;;
*)echo "Unknown server"
;;
esac
Run Code Online (Sandbox Code Playgroud)

但它没有用.正则表达式正在与egrep合作,但不与案例合作.样本O/P.

./test-back.sh ws-23.host.com
ws-23.host.com
Unknown server
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?

regex bash glob case

39
推荐指数
7
解决办法
6万
查看次数

表达式在switch case语句中

我正在尝试创建一个switch语句但我似乎无法使用得到评估的表达式(而不是设置字符串/整数).我可以使用if语句轻松完成此操作,但希望案例更快.

我正在尝试以下方法

function reward(amount) {
    var $reward = $("#reward");
    switch (amount) {
        case (amount >= 7500 && amount < 10000):
            $reward.text("Play Station 3");
            break;
        case (amount >= 10000 && amount < 15000):
            $reward.text("XBOX 360");
            break;
        case (amount >= 15000):
            $reward.text("iMac");
            break;
        default:
            $reward.text("No reward");
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西,或者这是不可能的?谷歌在这种情况下并不友善.

任何帮助/指针赞赏

中号

javascript case switch-statement

36
推荐指数
3
解决办法
6万
查看次数

检查CASE语句中的空日期,哪里出错了?

我的源表看起来像这样

Id     StartDate
1      (null)
2      12/12/2009
3      10/10/2009
Run Code Online (Sandbox Code Playgroud)

我想创建一个选择上面的select语句,但是如果日期不为null,还有一个额外的列来显示varchar,例如:

Id     StartDate    StartDateStatus
1      (null)       Awaiting
2      12/12/2009   Approved
3      10/10/2009   Approved
Run Code Online (Sandbox Code Playgroud)

我的选择中有以下内容,但它似乎不起作用.Approved即使日期有一些空值,所有状态都会设置为

        select
             id,
             StartDate,
        CASE StartDate
        WHEN null THEN 'Awaiting'
        ELSE 'Approved' END AS StartDateStatus
        FROM myTable
Run Code Online (Sandbox Code Playgroud)

我的查询结果如下:

Id     StartDate    StartDateStatus
1      (null)       Approved
2      12/12/2009   Approved
3      10/10/2009   Approved
4      (null)       Approved
5      (null)       Approved
Run Code Online (Sandbox Code Playgroud)

StartDate是一个smalldatetime,应该如何处理它有一些例外吗?

谢谢

sql sql-server-2005 case smalldatetime

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

什么是大型开关盒的良好替代品?

我有一个名为Country的对象.在程序的某个时刻,我想设置每个对象的场强.

每个国家的权力是固定的,我在一张纸上有所有196个国家的数据.例如,我的代码应该检查国家/地区的名称是否为USA(如果是,则将其功率设置为100),依此类推.

我知道我可以用开关盒做到这一点,但是最好,最好,最有效的方法是什么?

c# case switch-statement

31
推荐指数
3
解决办法
3616
查看次数

c#switch语句返回适合替换break

这是处理c#switch语句的合适方法还是需要显式中断? 参考

  public static string ToRegistryString(AliceKey.AliceKeyPaths aliceKeyPath)
    {
     switch (aliceKeyPath)
        {
            case AliceKey.AliceKeyPaths.NET_CLR_DATA:
                return @"\.NET CLR Data\";
            case AliceKey.AliceKeyPaths.NET_CLR_NETWORKING:
                return @"\.NET CLR Networking\";
            case AliceKey.AliceKeyPaths.NET_DATA_PROVIDER_MSSQL:
                return @"\.NET Data Provider for SqlServer\";
            case AliceKey.AliceKeyPaths.NET_DATA_PROVIDER_ORACLE:
                return @"\.NET Data Provider for Oracle\";
         }
       return new string(new char[0]);
     }
Run Code Online (Sandbox Code Playgroud)

c# case switch-statement

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