如果用sqlserver该怎么实现按指定的格式实现流水号?

oracle是用trim(to_char(SEQ_ADDR_LEVEL_2.Nextval, '00000')) 实现流水号按指定的格式输出; 如果用sqlserver该怎么实现呢?
oracle ————select 'P'||trim(to_char(patient_new_id.nextval,'009999999')) patient_id from dual是什么意思

第1个回答  2013-05-19
SQL Server 2012 版本, 新增了 序列号的功能。
可是实现类似的处理。

如果是 SQL Server 2008 或者以下版本的, 可以使用 identity + 计算列的处理机制。

oracle:
select 'P'||trim(to_char(patient_new_id.nextval,'009999999')) patient_id from dual

'P' 是 固定字符串.
|| 是 连接字符串
trim 是去除 字符串前后的空格
to_char 是把数字类型的, 转换为 字符类型
patient_new_id.nextval 这里的 patient_new_id 应该是一个序列号, nextval 是获取序列号的下一个值。
'009999999' 是 TO_CHAR 函数的 格式化字符串, 0 意味这如果数字不到这一位,那么也要显示0。
patient_id 是前面那个 'P' || ...... 查询结果的 别名。
from dual 是因为 Oracle 不允许你像 sql server 那样 select 1 这样的处理。 必须要 from 一个表, 因此只好 from 一个 只有1行数据的系统表。
相似回答