我只需要在查询的某些部分执行RTRIM()
,但如果我执行 TRIM() 将会影响性能。
是Trim()
更慢/更快/完全相同(甚至没有可以忽略不计的差异)
与 RTRIM()
和 LTRIM()
相比?
这仅适用于 Oracle 10g。
但是对于 SQL Server 2005,
我们是否有函数/方法“x()”,以便它可以将 RTRIM(LTRIM(' blah.. blah.. '))
替换为单个函数?
我的意思只是使用“单一”函数来执行 RTRIM()
和 LTRIM()
所执行的相同功能。
最佳答案
根据这个粗略的测试,有一个很小的差异:
DECLARE
n PLS_INTEGER := DBMS_UTILITY.get_time;
s1 VARCHAR2(32767);
s2 VARCHAR2(32767);
BEGIN
s1 := LPAD('X',15000,' ') || RPAD('X',15000,' ');
FOR i IN 1..1000000 LOOP
NULL;
END LOOP;
DBMS_OUTPUT.put_line('Baseline: ' || (DBMS_UTILITY.get_time - n));
n := DBMS_UTILITY.get_time;
FOR i IN 1..1000000 LOOP
s2 := LTRIM(s1);
END LOOP;
DBMS_OUTPUT.put_line('LTRIM: ' || (DBMS_UTILITY.get_time - n));
n := DBMS_UTILITY.get_time;
FOR i IN 1..1000000 LOOP
s2 := RTRIM(s1);
END LOOP;
DBMS_OUTPUT.put_line('RTRIM: ' || (DBMS_UTILITY.get_time - n));
n := DBMS_UTILITY.get_time;
FOR i IN 1..1000000 LOOP
s2 := TRIM(s1);
END LOOP;
DBMS_OUTPUT.put_line('TRIM: ' || (DBMS_UTILITY.get_time - n));
END;
在最坏的情况下,差异可达 0.000128 百分之一秒:
Baseline: 0
LTRIM: 113
RTRIM: 103
TRIM: 8
Baseline: 0
LTRIM: 136
RTRIM: 133
TRIM: 8
关于string - TRIM RTRIM LTRIM 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4141763/