我的代码大部分都按预期工作。然而,它最后返回的字符太多了。我尝试添加 -1,但出现越界错误。我做错了什么?
SELECT
SUBSTR(
t.variable,
INSTR(t.variable, '*', 1, 2) + 1,
INSTR(t.variable, '*', 1, 3) - INSTR(t.variable, '*', 1, 2)
)
FROM test t;
我尝试过-1、+1。 -1 给我一个出站错误,+1 添加一个额外的字符。
样本值:
XBR*jkhehj8f22*3012367134*CVHI*N* X*G*P
你把
-1
放在哪里了?把它放在正确的地方,这似乎有效:
SELECT
SUBSTR(
t.variable,
INSTR(t.variable, '*', 1, 2) + 1,
INSTR(t.variable, '*', 1, 3) - INSTR(t.variable, '*', 1, 2) -1
)
FROM test t;
在这里查看:
但最重要的是,我的建议是修复架构,因为像这样的列中的分隔数据通常确实是破碎的设计。这需要一个额外的表(可能)有 9 列:一列用于此表中的 ID,一列用于此列中每个
*
分隔的字段。