LENGTH(trim(:NEW.ADDRESS)) trim 是整个脚本的“:NEW.ADDRESS”吗?
Does LENGTH(trim(:NEW.ADDRESS)) trim the ":NEW.ADDRESS" for the entire script?
我是 oracle 的新手,我想在插入地址之前将触发器写入 table。我要检查是否有任何 spaces '' 被保存到列中。
IF LENGTH((:NEW.ADDRESS))=1 and LENGTH(trim(:NEW.ADDRESS))>LENGTH((:NEW.ADDRESS)) Then
--Do Something
END IF;
所以我的问题是 trim(:NEW.ADDRESS), trim 关闭整个触发器代码的 space 还是仅 trim对于特定部分?就像如果我必须在下面的某个地方使用 (:NEW.ADDRESS) 它有原始的 space 吗?
比如,让我们假设我们有
:NEW.ADDRESS='TEMP '
where LENGTH((:NEW.ADDRESS))=5
and LENGTH(trim(:NEW.ADDRESS)) =4
因此,如果我必须在这行代码之后使用它,那么 :NEW.ADDRESS 中的值是多少? 'TEMP'(长度 4) 或 'TEMP '(长度 5)
So my question is does trim(:NEW.ADDRESS), trim off the space for the entire Trigger code or does it only trim for the particular part? like if I have to use (:NEW.ADDRESS) somewhere below does it have the original space?
The TRIM()
function 不会影响传入的值。它 returns 已 trimmed 的值的副本。你可以用文字或表达式的结果来调用它,而不仅仅是一个变量,而且不可能修改它们。
因此,如果您再次引用 :NEW.ADDRESS
,它仍然是相同的,带有任何前导或尾随空格。 table 中实际存储的值将包含空格。
这当然很容易验证你自己。
如果你想修改插入的值,你需要给它赋值:
:NEW.ADDRESS := trim(:NEW.ADDRESS);
如果你早点这样做,你就不必在检查长度之前再次 trim 了。而实际存储在 table 中的值不会 not 包括空格。但是你无法看到原始的 untrimmed 值,除非你制作一个本地副本。
我是 oracle 的新手,我想在插入地址之前将触发器写入 table。我要检查是否有任何 spaces '' 被保存到列中。
IF LENGTH((:NEW.ADDRESS))=1 and LENGTH(trim(:NEW.ADDRESS))>LENGTH((:NEW.ADDRESS)) Then
--Do Something
END IF;
所以我的问题是 trim(:NEW.ADDRESS), trim 关闭整个触发器代码的 space 还是仅 trim对于特定部分?就像如果我必须在下面的某个地方使用 (:NEW.ADDRESS) 它有原始的 space 吗?
比如,让我们假设我们有
:NEW.ADDRESS='TEMP '
where LENGTH((:NEW.ADDRESS))=5
and LENGTH(trim(:NEW.ADDRESS)) =4
因此,如果我必须在这行代码之后使用它,那么 :NEW.ADDRESS 中的值是多少? 'TEMP'(长度 4) 或 'TEMP '(长度 5)
So my question is does trim(:NEW.ADDRESS), trim off the space for the entire Trigger code or does it only trim for the particular part? like if I have to use (:NEW.ADDRESS) somewhere below does it have the original space?
The TRIM()
function 不会影响传入的值。它 returns 已 trimmed 的值的副本。你可以用文字或表达式的结果来调用它,而不仅仅是一个变量,而且不可能修改它们。
因此,如果您再次引用 :NEW.ADDRESS
,它仍然是相同的,带有任何前导或尾随空格。 table 中实际存储的值将包含空格。
这当然很容易验证你自己。
如果你想修改插入的值,你需要给它赋值:
:NEW.ADDRESS := trim(:NEW.ADDRESS);
如果你早点这样做,你就不必在检查长度之前再次 trim 了。而实际存储在 table 中的值不会 not 包括空格。但是你无法看到原始的 untrimmed 值,除非你制作一个本地副本。