在本文中,您将会了解到关于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)
- 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)
一、写在前面
编写该文章的目的在于积累 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 , 需要的朋友可以参考下
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
一周前我被介绍到一个已经存在的 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 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
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
, andhashCode
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 inpattern 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的相关知识,请在本站寻找。
本文标签: