SELECT MT940_INFLOW.SEQ_NO, MT940_INFLOW.VALUE_DATE, MT940_INFLOW.POST_DATE, MT940_INFLOW.AMOUNT, MT940_INFLOW.DR_CR, MT940_INFLOW.REFERENCE, MT940_INFLOW.TRXN_TYPE, MT103_INFLOW.REFERENCE AS EXPR1, MT103_INFLOW.BENEFICIARY_CUSTOMER, MT103_INFLOW.RECEIVER_INFORMATION
FROM MT940_INFLOW, MT103_INFLOW
WHERE MT940_INFLOW.REFERENCE = MT103_INFLOW.REFERENCE
正在加入2个oracle表,如上面的查询中所示。我的问题是表MT103_INFLOW上的Reference列,返回空格>如何修改我的查询以在引用结束时去除空白的MT103_INFLOW的引用列。
答案 0 :(得分:1)
使用trim
功能:
SELECT trim(MT940_INFLOW.REFERENCE) AS REFERENCE, ....
WHERE trim(MT940_INFLOW.REFERENCE) = trim(MT103_INFLOW.REFERENCE)
注意我添加了一个别名,因此结果中的字段仍会被调用REFERENCE
,但此别名不能用于WHERE
子句。
另外,我认为最好在存储引用时过滤掉空格,特别是在你的情况下,因为你也使用引用进行过滤。在过滤器中使用trim
等函数时,会阻止Oracle使用该列上的任何索引,因此最终查询速度会变慢。因此,在存储空间时,最好从场中修剪空间。
要更新现有数据,您可以执行以下操作:
UPDATE MT940_INFLOW
SET REFERENCE = trim(REFERENCE);
当您修复输入和现有数据时,可以从SELECT
查询中删除修剪函数,它将变得更有效。
答案 1 :(得分:0)
SELECT A.SEQ_NO, A.VALUE_DATE, A.POST_DATE, A.AMOUNT, A.DR_CR, REPLACE(A.REFERENCE,CHR(13)),
A.TRXN_TYPE, B.* FROM MT940_INFLOW A
INNER JOIN MT103_INFLOW B
ON A.REFERENCE = REPLACE(B.REFERENCE,CHR(13))
在进一步调查中,我注意到它更像是一个额外的行,而不是空格,所以我修改了我的查询,如上所示,它工作正常。