可以使用”in”子句进行开关案例吗?

huangapple go评论64阅读模式
英文:

Can we do a switch case with an in clause

问题

下面是代码的翻译部分:

sql_query=f"""SELECT * FROM table1
where column1 in ('{list_of_values}')
order by CASE
WHEN column2 like'a%' THEN 1
WHEN column2 like'b%' THEN 2
WHEN column2 like'c%' THEN 3
ELSE 99 END;
"""

这是你的SQL查询,它尝试使用IN子句和CASE语句来进行筛选和排序。但是,你说你没有得到任何返回值。

sql_query=f"""SELECT * FROM table1
where column1 = '{value1}'
order by CASE
WHEN column2 like'a%' THEN 1
WHEN column2 like'b%' THEN 2
WHEN column2 like'c%' THEN 3
ELSE 99 END;
"""

这是你的第二个SQL查询,它使用=(等于)操作符来筛选数据,你说它返回了值。

你想知道在第一个查询中有什么问题。问题可能出现在column1 in ('{list_of_values}')这一部分,确保list_of_values 中包含正确的数值,否则查询可能不会返回任何匹配项。如果list_of_values 不正确或为空,那么查询将无法匹配任何行。请确保list_of_values 的格式正确,并包含适当的值。

另外,确保查询中的表名和列名都正确,以及其他可能导致查询失败的问题,如数据类型不匹配等。

英文:

Can we do use an in clause with case

sql_query=f"""SELECT * FROM table1
where column1 in ('{list_of_values}')
order by CASE
WHEN column2 like'a%' THEN 1
WHEN column2 like'b%' THEN 2
WHEN column2 like'c%' THEN 3
ELSE 99 END;
"""

I am not getting any value in return but when I try

sql_query=f"""SELECT * FROM table1
where column1 = '{value1}'
order by CASE
WHEN column2 like'a%' THEN 1
WHEN column2 like'b%' THEN 2
WHEN column2 like'c%' THEN 3
ELSE 99 END;
"""

I get a value in return. What am I doing wrong in the first query. Thanks.

答案1

得分: 1

where column1 in ('{list_of_values}')

你的 '{list_of_values}' 不会起作用,它需要将每个单独的项用逗号分隔并置于单引号内,例如 where column1 in ('a','b','c','etc')

英文:
where column1 in ('{list_of_values}')

your '{list_of_values}' isn't going to work, it needs to be each individual item comma separated and within individual quotes e.g. where column1 in ('a','b','c','etc')

huangapple
  • 本文由 发表于 2023年2月18日 11:35:51
  • 转载请务必保留本文链接:https://go.coder-hub.com/75491013.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定