尝试动态更改 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
我正在尝试生成一个 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