【发布时间】:2014-05-02 15:22:36
【问题描述】:
我是 SQL 新手,目前使用 mySQL CONCAT 从 Letters 即 ABC 和 Number 即 00005 创建一个 ID。
CONCAT 从数字中删除前导零。如何使用前导零维护原始数字,以便输出为
ABC00005
不是
ABC5
CONCAT(`Letters`,`Number`)
此 CONCAT 以 ID 的形式存储在列中。然后我需要能够按数字选择ID
- ZYX00001
- ABC00002
- PQR00003
- HIJ00004
没有
- ABC00002
- HIJ00004
- PQR00003
- ZYX00001
我在tempid 表中创建了一个mergedID 列,并使用以下代码来解决我的问题
UPDATE `tempid` SET `mergedID` = CONCAT(`Letter`,`Number`); INSERT INTO `main` (`ID`) VALUES (`mergedID`)
这给了我正确的 ID,包括零,但我觉得有更好的方法来做到这一点。
我现在可以执行以下操作:
SELECT * FROM `main` ORDER BY RIGHT(`ID`,5)
我相信我已经进行了研究以实现此解决方案并且不保证负面评价。
【问题讨论】:
-
列有哪些数据类型?
-
您似乎正在尝试存储派生数据。这有时是不受欢迎的。
-
是的,它是一个零填充列
-
我看不到 concat 如何删除前导零; fiddle.
-
当我将 CONCAT 放到另一个表中时,它们似乎被删除了