0

クレジット カード番号の列を含む "booking" という名前の mySQL データベース テーブルがあります。明らかに、これは適切でも安全でもありません。実際に必要なのは、そのフィールドの最後の 4 桁だけです。この間違いを修正する mySQL 呼び出しが必要です。

データベーステーブル全体を通過し、すべての Visa、Mastercard、Discover カード番号 (長さが異なる) を置き換え、最後の 4 文字を除くすべてを XXX で上書きする 1 つの SQL ステートメントを作成する方法はありますか? それとも、置換を行うために各レコードをループする何かを書く必要がありますか?

テーブルは「予約」と呼ばれ、フィールドは「クレジットカード番号」と呼ばれます

4

2 に答える 2

4

このようにしてみてください

SELECT
  CONCAT(
    REPEAT('X', CHAR_LENGTH(card_number) - 4),
    SUBSTRING(card_number, -4)
  ) AS masked_card
FROM
  table_name ;
于 2012-12-15T07:56:09.853 に答える
3

この参照を確認してください: * SQLFIDDLE . テーブル スキーマは気にしないでください。これはサンプルの古いデータです。最初のレコードをクレジット カード番号に変更しました (5、4、または 3 で始まっていません ;) がLAPD、仕事はします。

クエリ:

select right(hasha,4),
lpad(right(hasha,4),length(hasha),'x')
from actors
where id = 1
;

結果:

RIGHT(HASHA,4)  LPAD(RIGHT(HASHA,4),LENGTH(HASHA),'X')
3456            xxxxxxxxxxxx3456
于 2012-12-15T08:01:20.070 に答える