0

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

3 回答 3

0

使用函数LENGTHSUBSTR

select CASE WHEN LENGTH("partdesc") > 11 
THEN 
    SUBSTR("partdesc", 1, LENGTH("partdesc")-11) 
ELSE
    "partdesc"
END AS trimmedDesc
from YourTable

SQLFiddle在这里

PS在您的问题标题中,您说您必须删除最后8个字符,但是在问题中,您说的是11。无论如何,查询是相同的,根据需要使用8或11。

于 2013-11-14T21:04:57.197 回答
0
substr(part_desc,1,length(part_desc)-10)
于 2013-11-14T21:05:43.990 回答
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
)
/
于 2013-11-15T16:21:13.447 回答