如何在SQL Server中使用带有条件的Left函数进行选择?

时间:2017-02-01 16:12:57

标签: sql-server tsql conditional

在postgres中,我可以使用以下内容:

Accept

但是在SQL Server中无法使用“=”

如何在SQL Server中实现它。

2 个答案:

答案 0 :(得分:3)

LEFT函数没有错,但在评估表达式后返回truefalse,您需要CASEIIF SQL server

中的陈述
case when LEFT([COLUMN], 1) = 'B' then 'true' else 'false' end

IIF(LEFT([COLUMN], 1) = 'B','true','false' )

答案 1 :(得分:1)

OP询问了postgresql语法,这在sql server看来确实很奇怪。我猜您想返回一列布尔值? 那么问题将是sql server完全没有布尔数据类型!但是您可以使用BIT并将含义分配给0、1和NULL。但是它不是内置的。

对于标题“如何在SQL Server中使用带有条件的左函数进行选择?”,这很简单:CASE-END语句支持LEFT函数。但是有一个警告,那就是CASE-END的两种不同语法:

语法1:

WixForm

语法2:

TYPE_OF_PKG

两者之间的 big 区别是:语法1使所有条件都检查相同的值(即[Column]),而语法2支持不同的条件子句。他们不能混在一起。例如: 1)

this.RadioButtonsGroup.BoundProperty = "TYPE_OF_PKG";
this.RadioButtonsGroup.ControlType = WixSharp.Controls.ControlType.RadioButtonGroup;
this.RadioButtonsGroup.EmbeddedXML = @"
<RadioButtonGroup Property=""TYPE_OF_PKG"">
    <RadioButton Value=""ABC"" X=""0"" Y=""0"" Width=""400"" Height=""20"" Text=""ABC"" />
    <RadioButton Value=""XYZ"" X=""0"" Y=""20"" Width=""400"" Height=""20"" Text=""XYZ"" />
</RadioButtonGroup>";
this.RadioButtonsGroup.Hidden = false;
this.RadioButtonsGroup.Id = "RadioButtonsGroup";
this.RadioButtonsGroup.Location = new System.Drawing.Point(12, 69);
this.RadioButtonsGroup.Name = "RadioButtonsGroup";
this.RadioButtonsGroup.Size = new System.Drawing.Size(466, 125);
this.RadioButtonsGroup.Text = "What to install .wixText?";
this.RadioButtonsGroup.Tooltip = null;
this.RadioButtonsGroup.WixAttributes = null;
this.RadioButtonsGroup.WixText = "What to install .wixText?";

在“ =”上抛出语法错误,而2)

CASE [Column] WHEN 'B' THEN 1 ELSE 0 END

工作完美。