我的oracle sql查询的结果有一个列,其中部分描述的颜色代码和大小类似于CASHMERE POPOVER HOODIE, BL8133, S
。我需要删除所有结果的最后11个字符。,不管结果列大小
例如,结果是
CASHMERE POPOVER HOODIE, BL8133, S
STRETCH PERFECT SHIRT IN CLAS, WA9148, L
我的预期结果:
CASHMERE POPOVER HOODIE
STRETCH PERFECT SHIRT IN CLAS
答案 0 :(得分:0)
select CASE WHEN LENGTH("partdesc") > 11
THEN
SUBSTR("partdesc", 1, LENGTH("partdesc")-11)
ELSE
"partdesc"
END AS trimmedDesc
from YourTable
SQLFiddle here。
P.S。在你的问题的标题中,你说你必须删除最后8个字符,但是,在问题中,你说11.无论如何,查询是相同的,根据需要使用8或11。
答案 1 :(得分:0)
substr(part_desc,1,length(part_desc)-10)
答案 2 :(得分:0)
SELECT SUBSTR(str, 1, Instr(str, substr(str, -11))-1 ) final_str FROM
(
SELECT 'CASHMERE POPOVER HOODIE, BL8133, S' str FROM dual
UNION
SELECT 'STRETCH PERFECT SHIRT IN CLAS, WA9148, L' FROM dual
)
/