GVKun编程网logo

MSSQL 中 Case 语句的用法(mssql case when)

1

在本文中,您将会了解到关于MSSQL中Case语句的用法的新资讯,同时我们还将为您解释mssqlcasewhen的相关在本文中,我们将带你探索MSSQL中Case语句的用法的奥秘,分析mssqlcas

在本文中,您将会了解到关于MSSQL 中 Case 语句的用法的新资讯,同时我们还将为您解释mssql case when的相关在本文中,我们将带你探索MSSQL 中 Case 语句的用法的奥秘,分析mssql case when的特点,并给出一些关于ASP 中用 select case 代替其他语言中的 switch case, default 用 case else、ASP.Net非核心Web API - 将 Camel case 格式的 JSON 答案更改为 Pascal case 引导程序JsonSerializer、bash脚本中 if 语句 和 for 语句的用法、case classes & case companion objects & case objects的实用技巧。

本文目录一览:

MSSQL 中 Case 语句的用法(mssql case when)

MSSQL 中 Case 语句的用法(mssql case when)

 一、写在前面

编写该文章的目的在于积累 sql 方面的知识,希望减轻自己的代码负担,能尽量用 sql 就能解决的问题就不要再用代码解决。

二、demo

 先来看一下数据库表数据如图:

我们项目经常会遇到这样的问题,性别存储用 1,2,实际显示用的男女,那我们也可以直接通过 select 语句使用 case 判断来直接返回我们需要的结果

sql 如下:

select name,
case sex
when ''1'' then ''男''
when ''2'' then ''女''
else '''' end as sex
from UserTest 

查询结果图如下:

三、结论

其实也并不是说,能够使用这样的方式拿到处理后的数据就一定是好的,因为我们可能面临更多的需求变化,那也可能拿到原始数据后用代码处理更好扩展维护,这仅仅只是提供了一个解决该类问题的方法,什么时候用,得看具体情况

ASP 中用 select case 代替其他语言中的 switch case, default 用 case else

ASP 中用 select case 代替其他语言中的 switch case, default 用 case else

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代

这篇文章主要介绍了 ASP 中用 select case 代替其他语言中的 switch case, default 用 case else , 需要的朋友可以参考下



 

asp 中不能用 switch 语句,要用 select case 语句了

简单的介绍一下

选择报表的工作一样,如果语句。然而不同的是,他们可以检查多个值。当然,你有
多个相同的,如果.. else 语句,但是这并不总是最好的方法。
选择语句允许一个程序来计算表达式,并试图匹配表达式的值案件标签。如果找到匹
配,程序执行相关的声明。对于 SELECT 语句的语法如下:

select case expression 
  case label_1
   statements_1
  case label_2
   statements_2
  ...
  case else
   statements_n
end select

该计划首先查找与匹配的表达式的值标签的情况,然后条控制转移到该条款,执行相
关的声明。如果没有找到匹配的标签,程序查找任择案 Else 子句,如果发现,将控制
转移到该条款,执行相关的声明。如果没有 Case Else 子句发现,程序继续执行的声明
后选择结束。利用休息时间,避免因进入下一个代码自动执行。
让我们考虑一个例子:

<%@ language="vbscript">
<%
Dim Flower
Flower = "rose"
select case flower
 case "rose"
   response.write(flower & " costs $2.50")
 case "daisy"
   response.write(flower & " costs $1.25")
 case "orchild"
   response.write(flower & " costs $1.50")
 case else 
   response.write("There is no such flower in our shop")
end select
%>

例子 1、

<%
''/*ASP中用select case代替其他语言中的switch case, default用case else*/
dim today
today = 5
select case today
 case 0 
 str = "星期天"
 case 1
 str = "星期一"
 case 2
 str = "星期二"
 case 3
 str = "星期三"
 case 4
 str = "星期四"
 case 5
 str = "星期五"
 case 6
 str = "星期六"
 case 7, 8, 9
 str = "today的值是7,8,或9"
 case else
    str = "未知"
end select
 
response.write str
response.End()
%>
 
/*------------输出结果--------
星期五
------------*/

实例 2、

board=request("board")
 select case board   
     case "1"
     boardName = "技术版"
     case "2"
     boardName = "信息版"   
     case "3"
     boardName = "客服星空"
     case "4"
     boardName = "灌水区"
     case "5"
     boardName = "市场营销"
     case "6"
     boardName = "经理论坛"
     case "7"
     boardName = "影音论坛"
     case "8"
     boardName = "延伸服务"
     case "9"
     boardName = "东北片区"
     case "10"
     boardName = "市场动态"
     case "11"
     boardName = "群发交流"
     case "12"
     boardName = "hombre"
     case "14"
     boardName = "论坛"
     case "15"
     boardName = "在线答疑"
         case else
        boardName = ""
end select

注意:case "1" 后面不能有冒号,boardName = "技术版" 后面不能有分号,而且不能出现 break 语句

ASP.Net非核心Web API - 将 Camel case 格式的 JSON 答案更改为 Pascal case 引导程序JsonSerializer

ASP.Net非核心Web API - 将 Camel case 格式的 JSON 答案更改为 Pascal case 引导程序JsonSerializer

如何解决ASP.Net非核心Web API - 将 Camel case 格式的 JSON 答案更改为 Pascal case 引导程序JsonSerializer

一周前我被介绍到一个已经存在的 C# ASP.Net Web API 项目。它以 JSON 和 Pascal Case 形式返回所有数据,这些数据由使用 React.Js 的网站使用,这些数据区分大小写。

上周,在 API 项目上的提交几乎没有任何变化(它只为解决方案中的 Web 客户端项目添加了翻译)之后,突然该项目开始在 Camel 案例中返回 JSON而不是在 Pascal Case 中。

问题不像 this post,我不发送 API 骆驼而不是 pascal,API 发送骆驼而不是 pascal。

我一直在寻找如何修复它,但该项目有两个特殊性使得很难找到答案:

  • 该项目使用 ASP.Net 而不是 ASP.Net Core,使得 this 或 this 之类的帖子没有帮助
  • 该项目使用 NancyFx 2.0.0,因此它没有任何启动文件(如核心项目中的启动类或 .asax 文件),但使用自定义引导程序(请参阅下面的代码)

引导程序

public class AppBootstrapper : DefaultNancyBootstrapper
{
    protected override void ApplicationStartup(TinyIoCContainer container,IPipelines pipelines)
    {
        log4net.Config.XmlConfigurator.Configure();

        base.ApplicationStartup(container,pipelines);

        pipelines.BeforeRequest.AddItemToStartOfPipeline(ctx =>
        {
            if (ctx != null)
            {
                Log.Request(ctx.Request.GetHashCode(),ctx.Request.Method,ctx.Request.Path,ctx.Request.UserHostAddress,ctx.Request.Headers.UserAgent);
            }

            return null;
        });

        pipelines.AfterRequest.AddItemToEndOfPipeline(ctx =>
        {
            if (ctx != null)
            {
                Log.Response(ctx.Request.GetHashCode(),ctx.Response.StatusCode);
            }
        });
    }

    protected override void RequestStartup(TinyIoCContainer container,IPipelines pipelines,NancyContext context)
    {
        pipelines.AfterRequest.AddItemToEndOfPipeline(ctx =>
        {
            ctx.Response.WithHeader("Access-Control-Allow-Origin","*")
                .WithHeader("Access-Control-Allow-Methods","POST,GET,PUT,DELETE,HEAD,OPTIONS")
                .WithHeader("Access-Control-Allow-Headers","Accept,Origin,Content-type,Authorization");
        });

        // Gzip management,useless for this post
}

JsonSerializer

internal class JsonNetSerializer : ISerializer
{
    private readonly JsonSerializer _serializer;

    /// <summary>
    /// Initializes a new instance of the <see cref="JsonNetSerializer"/> class.
    /// </summary>
    public JsonNetSerializer()
    {
        _serializer = JsonSerializer.CreateDefault();
    }

    /// <summary>
    /// Initializes a new instance of the <see cref="JsonNetSerializer"/> class,/// with the provided <paramref name="serializer"/>.
    /// </summary>
    /// <param name="serializer">Json converters used when serializing.</param>
    public JsonNetSerializer(JsonSerializer serializer)
    {
        _serializer = serializer;
    }

    /// <summary>
    /// Whether the serializer can serialize the content type
    /// </summary>
    /// <param name="mediarange">Content type to serialise</param>
    /// <returns>True if supported,false otherwise</returns>
    public bool CanSerialize(Mediarange mediarange)
    {
        return JsonHelpers.IsJsonType(mediarange);
    }

    /// <summary>
    /// Gets the list of extensions that the serializer can handle.
    /// </summary>
    /// <value>An <see cref="IEnumerable{T}"/> of extensions if any are available,otherwise an empty enumerable.</value>
    public IEnumerable<string> Extensions
    {
        get { yield return "json"; }
    }

    /// <summary>
    /// Serialize the given model with the given contentType
    /// </summary>
    /// <param name="mediarange">Content type to serialize into</param>
    /// <param name="model">Model to serialize</param>
    /// <param name="outputStream">Output stream to serialize to</param>
    /// <returns>Serialised object</returns>
    public void Serialize<TModel>(Mediarange mediarange,TModel model,Stream outputStream)
    {
        using (var writer = new JsonTextWriter(new StreamWriter(new UnclosableStreamWrapper(outputStream))))
        {
            _serializer.Serialize(writer,model);
        }
    }
}

我一直在寻找解决方案,很久以来我发现一些网站在谈论 Owin,但似乎我必须使用基于 owin 的服务器(如 Nowin)来托管 ASP.Net 应用程序。问题是我实际上从未使用过/听说过它,而且我没有时间学习如何使用它。最重要的是,我完全不确定 Nowin 的 Start<TContext>() 函数对于修改 API 的返回格式是否有用...

我发现的所有其他解决方案都适用于 ASP.Net Core 技术,但没有适用于 ASP.Net

bash脚本中 if 语句 和 for 语句的用法

bash脚本中 if 语句 和 for 语句的用法

在bash shell脚本中,我们要先了解三种执行顺序

顺序执行 (从左到右,从上到下的执行)

选择执行 (条件满足或者不满足的时候,才会执行某段结构)

循环执行 (重复执行某段结构)


今天所写的if 就是选择顺序,for就是循环执行

在if或者for中不可避免的要使用一些结构,还有一些运算方法,我先把这些列出来,方便以后使用。

算术运算方法

1.$[expression]

其中的表达式可以是纯数字组成的,也可以使用变量引用变量值;在使用变量时,可以将$符号省略;

示例:

# echo $[3+4]

# NUM1=5 ; NUM2=4 ; echo $[NUM1*NUM2]

2.let VAR=EXPRESSION

根据算术表达式完成算术运算并赋值给指定的变量;

3.$((EXPRESSION))

其中的表达式可以是纯数字组成的,也可以使用变量引用变量值;在使用变量时,可以将$符号省略;

4.expr ARGU1 ARGU2 ARGU3

其中ARGU1和ARGU3必须是整数数值;ARGU2是算术运算符;

5.echo "EXPRESSION" | bc

6.bc <<< EXPRESSION


位置参数变量
$0:命令的本身,对于脚本而言,就是该脚本的路径;
$1,$2.....$n:脚本后面通过命令行给脚本传递的命令行参数;
n>9时,引用该位置变量时,需要加{},即${10}

特殊变量:
$@:给出的所有位置参数的列表,当使用双引号引用时,每个参数作为单独的字符串存在;
$*:给出的所有位置参数的列表,当使用双引号引用时,整个参数列表被当做一个字符串;
$#:标识除去$0之外,整个命令行中有多少个参数;

shift命令,可以将$2->$1;


if语句:
if: if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi

if语句的单分支结构:
if 命令; then 命令; fi

注意:是否会执行then后面的命令,取决于if后面的命令的执行状态返回值;
1.如果其返回值为真,则执行then后面的命令;
2.如果其但回执为假,则不执行then后面的命令;


建议在脚本中的书写格式:
if CONDITION ; then
STATEMENT
..
fi


if CONDITION ;
then
STATEMENT
..
fi

if语句的双分支结构:
if 命令; then 命令; else 命令; fi

注意:是否会执行then或else后面的命令,取决于if后面的命令的执行状态返回值;
1.如果其返回值为真,则执行then后面的命令;
2.如果其但回执为假,则执行else后面的命令;


建议在脚本中的书写格式:
if CONDITION ; then
STATEMENT
..
else
STATEMENT
..
fi


if CONDITION ;
then
STATEMENT
..
else
STATEMENT
..
fi

if语句的多分支结构:(不建议使用,太麻烦,我们可以用下边的方法,进行单个或者多个的嵌套解决
if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi

注意:是否会执行then或else后面的命令,取决于if后面的命令的执行状态返回值或者elif后面的命令的执行状态返回值;
1.首先判断if后面的命令的状态返回值是否为真,如果为真,就执行then后面的语句;如果为假,就继续判断第一个elif后面的命令的执行状态返回值;
2.第一个elif后面的命令的执行状态返回值为真,就执行第一个elif语句中then后面的命令,否则,就继续判断第二个elif后面的命令执行状态返回值;
3.以此类推,会判断每个elif后面的命令的执行状态返回值是否为真,如果所有的if和elif后面的命令的执行状态返回值均为假,则执行else后面的语句;

建议在脚本中的书写格式:
if CONDITION ; then
STATEMENT
..
elif CONDITION2 ; then
STATEMENT
..
else ; then
STATEMENT
..
fi


if CONDITION ;
then
STATEMENT
..
elif CONDITION2 ; then
STATEMENT
..
else
STATEMENT
..
fi

注意:if的多分支结构,使用场景不多,而且有些时候,可以使用嵌套的单分支或双分支if结构代替if多分支结构;

嵌套的if结构

if CONTITIONG1 ; then
if CONTITIONG2 ; then
if CONTITIONG3 ; then
STATEMENT
..
else
STATEMENT
fi
else
STATEMENT
fi
else
STATEMENT
fi




一个好的循环结构,必须包括两个重要的环节;
1.进入循环的条件:
在符合要求或满足条件时才开始循环;

2.退出循环的条件:
达到某个要求或符合某个条件时需要结束或终止循环的执行;

for循环:
1.遍历列表的循环:
为列表中的每个成员执行命令。
for 名称 [in 词语 ... ] ; do 命令; done

建议在脚本中书写的格式:
for VAR_NAME in LIST ; do
循环体
done

for VAR_NAME in LIST
do
循环体
done

注意:
VAR_NAME:任意指定的变量名称,变量的值是从LIST中遍历获取的各个元素;
LIST:for循环需要遍历的列表;可以通过以下方式生成列表;
1.直接给出列表;
2.纯整数列表;
1)花括号展开:
{FirsTNUM..LASTNUM}
{FirsT,SECOND,THIRD,...,LAST}
2)seq命
seq [OPTION]... LAST
seq [OPTION]... FirsT LAST
seq [OPTION]... FirsT INCREMENT LAST
3.花括号展开:
{FirsT..LAST}
4.命令的执行结果:
ls /etc
5.GLOBBING通配符
6.某些特殊变量的值:
$*,$@
循环体:
一般来说,循环体中应该能够用到VAR_NAME变量的值的命令或命令的组合;如果循环体中的命令并没有用到VAR_NAME变量的值的话,列表的元素个数,就是此次for循环的次数;

1.进入循环的条件,LIST中尚有未被取尽的元素;
2.退出循环的条件,LIST中的元素被取尽;
3.for循环几乎不会出现死循环;
4.在执行循环的过程中,需要将整个LIST载入内存,因此。对于大列表来说,可能会消耗比较多的内存及cpu资源;




简单的例子(vim编辑内容)


1.传递一个字符串给脚本,脚本会将该字符串当作用户名,如果该用户不存在,则添加之并为其设置与用户名相同的密码。

#!/bin/bash
#
if[$#-ne1];then
echo"pleaseinputonenamecharast"
exit6;
fi
ifid$1&>/dev/null;then
echo"Thisuseralreadyexists"
else
useradd$1&>/dev/null
echo$1|passwd--stdin$1&>/dev/null
echo"Thisusercreatandpasswordisusername"
fi

2.将两个文本文件的路径传递给脚本作为其参数,如果有文件不存在,则结束脚本执行并报告错误信息;如果文件都存在,则比较两个文件中哪个文件的行数多,返回行数多的文件的文件名。

#!/bin/bash
#
read-p"Pleaseinputtwofiles:"FILE1FILE2
if!cat$FILE1&>/dev/null;then
echo"pleaseenterthefirsttruepathfile"
exit5
if!cat$FILE2&>/dev/null;then
echo"pleaseenterthesecondtruepathfile"
exit5
fi
fi
LINE1=$(cat$FILE1|wc-l)
LINE2=$(cat$FILE2|wc-l)
if[$LINE1-ne$LINE2];then
if[$LINE1-gt$LINE2];then
echo"$FILE1"
else
echo"$FILE2"
fi
else
echo"$FILE1and$FILE2aregenerallylong"
fi
unsetFILE1FILE2LINE1LINE2


3.利用RANDOM变量随机生成十个数字,显示出这十个数字,并显示出其中的最大值和最小值。

#!/bin/bash
#
touch/tmp/math.txt
forIin$(seq110);do
J=$RANDOM
echo"$J"
echo"$J">>/tmp/math.txt
done
K=$(sort-n/tmp/math.txt|head-1)
L=$(sort-n/tmp/math.txt|tail-1)
echo"laster$L;leaster$K"
rm-rf/tmp/math.txt
exit5



4.给脚本传递一个数字作为行总数,分别打印由*组成的最0小锐角朝上和朝下的等腰三角形以及菱形。

#!/bin/bash
#
read-p"enteronenumber:"INT
if[[$INT=~[^[:digit:]]]];then
echo"pleaseenterthenumber"
exit5
fi
echo”zhengsanjiao“
forIin$(seq$INT);do
forJin$(seq$[INT-I]);do
echo-n""
done
forKin$(seq$[2*I-1]);do
echo-n"*"
done
echo
done
echo"daosanjiao"
forMin$(seq$INT);do
forBin$(seq$[M-1]);do
echo-n""
done
forNin$(seq$[2*(INT-M)+1]);do
echo-n"*"
done
echo
done
echo"lingxing"
if[$[INT%2]-ne0];then
INT2=$[(INT+1)/2]
forQin$(seq$INT2);do
forWin$(seq$[INT2-Q]);do
echo-n""
done
forEin$(seq$[2*Q-1]);do
echo-n"*"
done
echo
done
forRin$(seq$[INT2-1]);do
forTin$(seq$[R]);do
echo-n""
done
forYin$(seq$[2*(INT2-R)-1]);do
echo-n"*"
done
echo
done
exit7
else
echo"qingshurujishu>3"
fi

5.分别打印顺序和旋转的九九乘法表。
顺序的九九乘法表是正常的九九乘法表;
旋转的九九乘法表是第一行是1×1=1 1×2=2 1×3=3 1×4=4 ... 1×9=9; 第二行是2×2=4 2×3=6 2×4=8 ... 2×9=18; ... 第九行是9×9=81;

#!/bin/bash
#
forIin$(seq19);do
forJin$(seq1$I);do
echo-ne"$I×$J=$[I*J]\t"
done
echo
done
forMin$(seq19);do
forNin$(seq$M9);do
echo-ne"$M×$N=$[N*M]\t"
done
echo
done

case classes & case companion objects & case objects

case classes & case companion objects & case objects

Features of a case class

  • A field for each constructor argument - we don''t even need to write val in our constructor definition, although there''s no harm in doing so.
  • A default toString method that prints a sensible contructor-like representation of the class(no more @ signs and cryptic hex numbers"
  • Sensible equals, and hashCode methods that operate on the field values in the object.
  • A copy method that creates a new object with the same field values as the current one.

Features of a case companion object

  • The Companion object contains an apply method with the same arguments as the class constructor.
  • The companion object also contains code to implement an extractor pattern for use in pattern matching.

Case objects

  • A case object is defined just like a case class and has the same default methods as a case class.
  • The case object keyword defines a class and an object, and makes the object an instance of the class.
  • With a case object we still get all of the functionality defined for case classes above.

Case classes are the bread and butter of Scala data types. Use them, learn them, love them.

关于MSSQL 中 Case 语句的用法mssql case when的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于ASP 中用 select case 代替其他语言中的 switch case, default 用 case else、ASP.Net非核心Web API - 将 Camel case 格式的 JSON 答案更改为 Pascal case 引导程序JsonSerializer、bash脚本中 if 语句 和 for 语句的用法、case classes & case companion objects & case objects的相关知识,请在本站寻找。

本文标签: