我正在尝试使用LRTIM来获取字符串的一部分。
这是我正在使用的代码。
SELECT
C.MANUFACTURER,
C.MODEL_GROUP,
LTRIM(C.VARIANT, C.MANUFACTURER || ' ' || C.MODEL_GROUP), "VAR DESC"
C.VARIANT
FROM STD_BI.RL2_CONTRACTS_VW C
这就是我明智的地方
VARIANT
AUDI A3 DIESEL SPORTBACK 2.0 TDI SE Technik 5dr Manual 150
MANUFACTURER
AUDI
MODEL_GROUP
A3
这是我得到的结果
MANUFACTURER MODEL_GROUP VAR DESC
AUDI A3 ESEL SPORTBACK 2.0 TDI SE Technik 5dr Manual 150
它正在切断DIESEL的前2个字符,问题是在所有情况下都没有发生这种情况。有时它会切断一个角色,有时甚至没有!
我已经考虑了实现这一目标的其他方法,即查找空格,但是有其他制造商和模型组有多个空格,所以试图从VARIANT字段中减去MANUFACTURER和MODEL_ROUP(字符串)
任何关于为什么会发生这种情况的想法或其他实现这一目标的建议都将不胜感激。
非常感谢,
基思
道歉似乎是编辑正在重新格式化我得到的结果
答案 0 :(得分:0)
LTRIM的第二个参数是一组单个字符,而不是一系列字符。在您的示例中,数据库从左侧删除字符,直到遇到不在('A','U','D','I','A','3')中的第一个字符,即{{1 } E
。
要从字符串DIESEL
中删除前缀p
,请使用
s
在你的情况下扩展到
case when SUBSTR(s,1,LENGTH(p))=p then SUBSTR(s,LENGTH(p)+1) else s end
答案 1 :(得分:0)
您可以REGEXP_REPLACE
使用'^'
- 表示字符串的开头。
SELECT
C.MANUFACTURER,
C.MODEL_GROUP,
REGEXP_REPLACE(C.VARIANT, '^'||C.MANUFACTURER || ' +' || C.MODEL_GROUP) "VAR DESC",
C.VARIANT
FROM STD_BI.RL2_CONTRACTS_VW C