我有如下表格:
code ---> INTEGER
name ---> CHAR
+------+------+
| code | name |
+------+------+
| 1 | aa |
| 2 | bb |
| 3 | cc |
我想以这种方式用左零填充代码字段:
SELECT LPAD(code,5,'0') FROM table;
此查询在 MySQL 中运行良好,但不适用于 SQL Server 和 PostgreSQL,我正在寻找适用于所有数据库或至少适用于这四种数据库的查询:
- MySQL
- PostgreSQL
- MSSQL
- Firebird
没有任何变化。有解决办法吗?
最佳答案
正确答案是“在您的客户端中执行此操作”。
RDBMS 级别没有单一的解决方案
但是,对于 SQL Server 2012(是的,下一个版本)、PostgreSQL 和 MySQL,您可以这样做:
RIGHT(CONCAT('00000', code), 5)
- 较新的 PostgreSQL 有 LPAD,SQL Server 没有
- 各种 FORMAT 函数不兼容(但又需要等到 SQL Server 2012)
- RIGHT一致,但字符串连接运算符不同
- SQL Server 2012新增CONCAT函数
关于mysql - SQL 以独立于数据库的方式填充零(LPAD),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8671484/