sql
  • sqlplus
  • substr
  • 2017-05-25 6 views 0 likes 
    0

    最初の4桁と最後の4桁を選択して、その間のすべての数字に "X"SQL Plusは、最初の4つの数字と最後の4つの数字を出力に表示します

    USER_NAME = 'トムユーザからSELECT ID。

    はそれが

    Output:5958XXXXXXXX4567 
    
    のように見えるように取得しよう:私はマスクされている任意の数のプレースメントとしてのxの持つ唯一の最初と最後の4つの数字を取得しようとしています

    Output 
    5958694850384567 
    

    これまでの質問は

    SELECT SUBSTR(id, 1, 4) from users 
    where user_name ='Tom' 
    

    ありがとうあなたの時間のために!

    答えて

    0

    LEFT()RIGHT()の機能を使用するだけでいいですか?これらは、それぞれ指定された文字列の左または右から特定の文字数を与えます。

    ます。またCONCAT()機能を使って、完全な文字列を構築するために、これらを組み合わせることができます。また

    SELECT CONCAT(LEFT(id, 4), 'XXXXXXXX', RIGHT(id, 4)) 
        FROM users 
    WHERE user_name = 'Tom' 
    

    、あなたは常に文字列内の文字の与えられた数を持っていない場合、あなたは中央部分を計算することができあなたの出力の同様REPLICATE()機能と数学のビットを介した:

    SELECT CONCAT(LEFT(id, 4), REPLICATE('X', LEN(id) - 8), RIGHT(id, 4)) 
        FROM users 
    WHERE user_name = 'Tom' 
    

    Oracleバージョン

    私はあなたがOracleが具体的かつSQL Serverを想定し使用していたことを認識していなかったので、私はその味でこれを処理するためにいくつかの類似したコードを提供します:

    SELECT LEFT(id, 4) || RPAD('X', LEN(id) - 8, 'X') || RIGHT(id, 4) 
        FROM users 
    WHERE user_name = 'Tom' 
    
    +0

    ありがとう@RIONを! 1行目でconcate ERRORを使用しようとすると、次のエラーが発生します。 ORA-00909:無効な引数数 – connollyc4

    +0

    SQL ServerではなくOracleを使用しているようです。あなたの環境で動作するかもしれない例を追加しました。そうでない場合は、私に知らせて、それをさらに調整します。 –

    関連する問題