我试图从我的表中获取所有数字,从一定数字开始。但有时我的系统会错误地输出数字,并将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)
答案 0 :(得分: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%'