我希望該REPLACE函式能夠檢測到 2022 年之前的年份并將它們標記為舊的。我想知道是否還有一種方法可以在 SQL 的同一資料列中同時執行這兩種REPLACE操作CONCAT?
我到目前為止的代碼是:
SELECT REPLACE(CONCAT(Year,Model), IF(Year>2021;1;0;){Year.value="New"};IF(Year<2022;1;0;){Year.value="Old"})
下面是一個制表符分隔的表格,它沒有確切的值,但它在我要使用的相同資料格式下作業。我喜歡的是“Replace_and_Concat”的最后一列值。
Year Model Concat Replace_and_Concat
2015 FT 2015, FT OLD FT
2016 TR 2016, TR OLD TR
2017 TR 2017, TR OLD TR
2018 TR 2018, TR OLD TR
2019 GG 2019, GG OLD GG
2020 FT 2020, FT OLD FT
2021 TR 2021, TR OLD TR
2022 TR 2022, TR NEW TR
2022 GG 2022, GG NEW GG
2022 FT 2022, FT NEW FT
2022 TR 2022, TR NEW TR
2022 TR 2022, TR NEW TR
2022 TR 2022, TR NEW TR
uj5u.com熱心網友回復:
您可以使用 case 運算式;我會使用連接運算子而不是 concat 函式,它會因為多個值放在一起而變得混亂:
select year, model,
year || ', ' || model as result1,
case when year< 2022 then 'OLD' else 'NEW' end || ' ' || model as result2
from your_table
如果您想使用當前年份而不是 2022 的固定值,您可以從系統日期中提取它:
select year, model,
year || ', ' || model as result1,
case when year< extract(year from sysdate)
then 'OLD' else 'NEW' end || ' ' || model as result2
from your_table
db<>小提琴
(我為列運算式使用了通用別名;部分原因是“concat and replace”并不是真正發生的情況,部分原因是使用函式名(“concat”)作為列別名可能會令人困惑,盡管它是允許的.)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/425303.html
上一篇:模式后的TRIM值
