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
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 に答える
0

関数LENGTHおよびSUBSTRを使用します。

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 に答える