SQLite 函数用前导零格式化数字?

标签 sqlite formatting numbers leading-zero

我有一个需要包含产品的 SQLite 数据库。这些产品具有固定格式的复合产品编号,由类别、组和产品编号 (cccccc.gg.ppp) 组成。每次插入新产品时,都应使用类别和组编号构建新产品编号,然后是该组中最高的产品编号加一。

为此,我考虑将所有三个数字存储在单独的字段中,并使用 View 动态组合产品编号。为此,我需要添加前导零,因为产品编号的格式是固定的。

但是,我似乎找不到可以让我这样做的内置 SQLite 函数... :-(

我宁愿不编写自定义函数,因为我们可能必须与其他开发人员共享数据库,以便他们从中读取数据;而且我不知道他们将使用什么平台或语言。

这可以吗?还是我们必须找到不同的解决方案?

最佳答案

这可以通过使用字符串连接和 substr 函数来完成。长话短说,这就是你想要的:

select substr('0000000000'||'1234', -10, 10)

下面是解释。

首先要知道SQLite的字符串连接操作符是||

我们将从一个与我们想要返回的值一样长的字符串开始。例如,如果您想返回一个长度始终为 10 个字符的数字,并且如果它更短,则用 0s 填充它,那么从一个包含 10 个字符的字符串开始 0s。为此,我们将连接您要返回的数字。在我们的示例中,即为“1234”。到目前为止,我们的部分看起来像这样:'0000000000'||'1234'

然后,将整个内容传递给 substr 函数。 According to the documentation ,下面是 substr 函数的工作原理:

The substr(X,Y,Z) function returns a substring of input string X that begins with the Y-th character and which is Z characters long. ... If Y is negative then the first character of the substring is found by counting from the right rather than the left.

因此,如果您希望字符串长度为 10 个字符,请将 -10 作为 Y 参数传递(从右边开始计数,向后 10 个字符)并传递 10 作为 Z 参数(总共取 10 个字符)。

关于SQLite 函数用前导零格式化数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899832/

相关文章:

c# - 使用SQLiteParameter设置DEFAULT值

android - 以先进先出(FIFO)顺序从sqlite数据库中提取Android

python - 我想创建一个函数,以 pythonic 方式通过 num 变量滚动一定数量的骰子

使用 rmultinom() 函数从 R 中的多项分布生成随机数

formatting - 如何在下划线模板中格式化数字?

javascript - 如何检查 JavaScript 数字是否是真实有效的数字?

ruby-on-rails - 安排 Rails 任务以安全备份数据库文件

java - 如何在 Android Studio 中从 CSV 文件导入时从 SQLite DB 中删除特殊字符?

c# - microsoft.interop.excel 格式化单元格

javascript - 有没有办法使用 Moment.js 解析相对日期?