If语句不能在select语句中使用。像这样的用例语句
我有一个查询如下:
Select
CHARINDEX('Test_Value',STRING_AGG(FSD.Test_Value_Field, ';')) As My_Return_Value,
FROM QE_CS CS
...
如果它在聚合字符串中,它会返回一个大于0的值,但是,如果值大于0,我只希望它返回1。我试着这样使用IF
:
Select
IF CHARINDEX('Test_Value',STRING_AGG(FSD.Test_Value_Field, ';')) > 0 THEN 1 ELSE 0 As My_Return_Value,
FROM QE_CS CS
但这又回来了:
关键字"IF"附近的语法不正确
很明显,我不熟悉在SQL server中使用IF
-如何获得预期结果?
Select
CASe when CHARINDEX('Test_Value',STRING_AGG(FSD.Test_Value_Field, ';')) > 0 THEN 1 ELSE 0 end As My_Return_Value,
FROM QE_CS CS
还有一个选项是sign()
示例
sign(CHARINDEX('Test_Value',STRING_AGG(FSD.Test_Value_Field, ';')))
Sign((将返回-1、0、1或空
你可以试试这个:
Select IIF(CHARINDEX('Test_Value',STRING_AGG(FSD.Test_Value_Field, ';')) > 0, 1, 0) As My_Return_Value FROM QE_CS CS
如果你有多个条件需要检查,CASE
是更好的选择,但你也可以使用"IIF"功能,这里的官方文档
select IIF(CHARINDEX('Test_Value',STRING_AGG('ABC;Test_Value', ';')) > 0 ,1,0) from QE_CS CS