尝试动态更改 sql 中的值

Trying to dynamically change a value in sql

我正在尝试生成一个 select 语句,其中一列中的硬编码字段具有不同的值。有没有更好的方法来做到这一点而不是编写另一个 select 声明,因为有不同的硬编码值?

    select 
       ppp.category_id,
       ppp.city_id,
       <<hardcoded values>>,
       ppp.address,
       ppp.status
    from product ppp
    where ppp.owner_id = 4186

select-列表中的表达式必须在准备查询时固定。解析查询后,您无法动态更改它。

如果你的表达式是常量值,你可以将它作为参数注入。然后您可以在执行查询时将参数传递给准备好的语句。

select 
   ppp.category_id,
   ppp.city_id,
   ? as the_third_column,
   ppp.address,
   ppp.status
from product ppp
where ppp.owner_id = 4186

如果您有固定的表达式列表,则可以使用 CASE 语句,这意味着它可以因行或查询参数而异:

select 
   ppp.category_id,
   ppp.city_id,
   CASE ppp.fetch_style
    WHEN 1 THEN LOWER(ppp.mycolumn)
    WHEN 2 THEN UPPER(ppp.mycolumn)
    WHEN 3 THEN REVERSE(ppp.mycolumn)
    ELSE ppp.mycolumn
   END AS mycolumn,
   ppp.address,
   ppp.status
from product ppp
where ppp.owner_id = 4186