我只需要在查询的某些部分做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

09-25 12:43