mysql - SQL 以独立于数据库的方式填充零(LPAD)

标签 mysql sql sql-server postgresql firebird

我有如下表格:

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/

相关文章:

php - echo bootstrap modal on php中的点击功能并提交数据

mysql - 如何根据 y<=x 的 x 列中的任何 y 在 mysql 表中查找重复值

c# - SQL 服务器版本错误 (datetime2)

c# - 从列表中删除重复项,但保留其计数

sql-server - 将数据从表导入excel文件错误

用于递增值的 MySQL 代码不起作用

mysql - RegExp 在查询中匹配电话号码格式的问题

mysql - 使用动态确定的值更新表

sql - MySQL ON DUPLICATE KEY UPDATE 在单个查询中插入多行

SQL Sum 除以相邻月份的权重