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 に答える