oracle中减去另一列的列值基础的substr函数
substr function for substract the column value basis of another column in oracle
oracle中如何使用substr函数减去列值
基于同一 table 中的另一个列值。
对于 example:suppose table abc 具有某些列值,例如 a=01-CEDAPR
而 B=AB_52MM_01-CEDAPR
现在我想根据值 AB_52MM 填充列 c。谁能建议我
实现此目标的正确方法是什么。
根据您提供的粗略信息,这里有一些可能对您有帮助或没有帮助的解决方案。如果他们不这样做,那么您将需要编辑您的问题以提供更详细的解释!
with sd as (select '01-CEDAPR' a, 'AB_52MM_01-CEDAPR' b from dual) -- assumed O1 in column b was a typo
select a,
b,
regexp_replace(b, '_'||a),
substr(b, 1, instr(b, '_', -1) -1)
from sd;
这应该比较简单。如果在 b
中找到 a
的值,则您要做的就是将其替换为空值。对吗?
WITH abc AS (
SELECT '01-CEDAPR' AS a, 'AB_52MM_01-CEDAPR' AS b
FROM dual
)
SELECT a, b, REPLACE(b, a)
FROM abc
如果您需要替换 a
值之前的 _
,那么您可能需要使用 REGEXP_REPLACE()
(以防 _
可能会或可能不会存在):
WITH abc AS (
SELECT '01-CEDAPR' AS a, 'AB_52MM_01-CEDAPR' AS b
FROM dual
)
SELECT a, b, REGEXP_REPLACE(b, '_?' || a || '$')
FROM abc
$
符号确保a
的值锚定到末尾; ?
使 _
可选。
oracle中如何使用substr函数减去列值
基于同一 table 中的另一个列值。
对于 example:suppose table abc 具有某些列值,例如 a=01-CEDAPR
而 B=AB_52MM_01-CEDAPR
现在我想根据值 AB_52MM 填充列 c。谁能建议我 实现此目标的正确方法是什么。
根据您提供的粗略信息,这里有一些可能对您有帮助或没有帮助的解决方案。如果他们不这样做,那么您将需要编辑您的问题以提供更详细的解释!
with sd as (select '01-CEDAPR' a, 'AB_52MM_01-CEDAPR' b from dual) -- assumed O1 in column b was a typo
select a,
b,
regexp_replace(b, '_'||a),
substr(b, 1, instr(b, '_', -1) -1)
from sd;
这应该比较简单。如果在 b
中找到 a
的值,则您要做的就是将其替换为空值。对吗?
WITH abc AS (
SELECT '01-CEDAPR' AS a, 'AB_52MM_01-CEDAPR' AS b
FROM dual
)
SELECT a, b, REPLACE(b, a)
FROM abc
如果您需要替换 a
值之前的 _
,那么您可能需要使用 REGEXP_REPLACE()
(以防 _
可能会或可能不会存在):
WITH abc AS (
SELECT '01-CEDAPR' AS a, 'AB_52MM_01-CEDAPR' AS b
FROM dual
)
SELECT a, b, REGEXP_REPLACE(b, '_?' || a || '$')
FROM abc
$
符号确保a
的值锚定到末尾; ?
使 _
可选。