0

我试图从某个数字开始获取我表中的所有数字。但有时我的系统保存数字错误,并将 1234 放在实数前面。因此,如果数字看起来像这样:65451,有时系统会使其看起来像这样:123465451

我试图删除前 4 个字符,然后只使用剩菜。

Select *
from Table_name

           WHERE Number = (CASE
                           WHEN SUBSTR (Number, 0, 4) = '1234' THEN SUBSTR (Number, 5)
                           ELSE
                              TO_CHAR (Number)
                        END)
4

1 回答 1

0

你想修正数字吗?如果是这样,这将解决问题:

UPDATE table_name
SET Number = SUBSTR(Number, 5)
WHERE Number LIKE '1234%';

但你真的应该首先关注领先数字是如何到达那里的。不能保证他们不会回来。

如果您尝试查询没有前缀的数字,则适用类似的逻辑:

SELECT
  CASE WHEN Number LIKE '1234%' THEN SUBSTR(Number, 5) ELSE Number END AS GoodNumber
FROM table_name

附录:根据注释,请求是找到所有有前缀的行并返回没有前缀的值,可以如下完成:

SELECT
  SUBSTR(Number, 5)
FROM table_name
WHERE Number LIKE '1234%'
于 2013-05-30T13:21:25.010 回答