连接时避免字符串和序列之间的空格

时间:2015-05-05 06:28:26

标签: sql oracle

SQL> select 'TMP' || to_char(sq_id.nextval, '000000') res
  2    from dual
  3  /

RES
----------
TMP 000006

SQL> select concat('TMP',to_char(sq_id.nextval, '000000')) res
  2    from dual
  3  /

RES
----------
TMP 000007

请解释我如何避免上述连接字符串之间的空格

2 个答案:

答案 0 :(得分:1)

避免使用FM(即删除尾随空格)来自char方法的空间:

to_char(sq_id.nextval,'FM000000')

答案 1 :(得分:1)

这是因为to_char(sq_id.nextval, '000000')在输出中产生前导空格

让我们看看:

SQL> CREATE SEQUENCE sq_id;

Sequence created.

SQL> select to_char(sq_id.nextval, '000000') from dual;

TO_CHAR
-------
 000001

您可以使用 LTRIM 修剪前导空格:

SQL> SELECT 'TMP' || ltrim(to_char(sq_id.nextval, '000000'), ' ') res FROM dual;

RES
----------
TMP000002

SQL>

或者,您可以使用 FILL MODE 格式模型。

表格文件:

  

FM

     

"填充模式"。此修饰符可抑制返回中的空白填充   TO_CHAR函数的值

例如,

SQL> SELECT 'TMP' || ltrim(to_char(sq_id.nextval, 'FM000000'), ' ') res FROM dual;

RES
----------
TMP000003

SQL>