我需要编写一些SQL来解析任何给定字符串的第二个字,或者如果没有空格,则整个字符串。
逻辑是
'XXX YYYYY ZZZZZ'将返回YYYY,
'XXX YYY'将返回YYY和
'XXXXXX'将返回XXXXXX。
有什么建议吗?有没有办法使用SUBSTR和字符串中的2个位置?而是使用长度。
非常感谢
答案 0 :(得分:3)
case
-- at least two words
when instr(c, ' ', 1, 1) > 0 then
case
-- at least three words
when instr(c, ' ', 1, 2) > 0 then
-- return text between first and last space
substr(
c
, instr(c, ' ', 1, 1)+1
, instr(c, ' ', 1, 2) - instr(c, ' ', 1, 1) - 1
)
else
-- return 2nd word (text after first space)
substr(c, instr(c, ' ', 1, 1)+1)
end
-- one word, return it
else c
end
答案 1 :(得分:-1)
如果您了解正则表达式,这可能会更简单:
SELECT CASE WHEN REGEXP_COUNT('STRING', ' ') > 0 THEN
REGEXP_SUBSTR ('STRING', '(\s)(\S*)',1,1)
ELSE
'STRING'
END
FROM DUAL