修剪(删除)oracle sql查询的结果列中的最后8个8个字符,而不考虑结果列大小

时间:2013-11-14 20:58:39

标签: sql oracle

我的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

3 个答案:

答案 0 :(得分:0)

使用函数LENGTHSUBSTR

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
)
/