web-dev-qa-db-ja.com

クエリ後に列の値を置き換える方法

数値の列があります

私は質問しています

SELECT column 
FROM table 
WHERE column='1' OR
column='2' OR 
column='3' OR
column='4'

その後

REPLACE (column, "1", "ABC");
REPLACE (column, "2", "DEF");
REPLACE (column, "3", "GHI");
REPLACE (column, "4", "JKL")

セミコロンを間違って使用しているかどうかはわかりません。

助けてください!

1
John

置換の対象としてCASEを使用できます。また、WHEREをより合理化するように変更しました。

SELECT
CASE 
    WHEN column = '1' THEN 'ABC'
    WHEN column = '2' THEN 'DEF'
    WHEN column = '3' THEN 'GHI'
    WHEN column = '4' THEN 'JKL'
END AS column
FROM table
WHERE column IN ('1','2','3','4')

注意として、columnintの場合、値を ''でラップする必要はありません。

SELECT
CASE 
    WHEN column = 1 THEN 'ABC'
    WHEN column = 2 THEN 'DEF'
    WHEN column = 3 THEN 'GHI'
    WHEN column = 4 THEN 'JKL'
END AS column
FROM table
WHERE column IN (1,2,3,4)

これによりテーブルがまったく変更されることはありません。データの表示方法が変更されるだけです。

3
Rich Benner

あなたはよりよく使うでしょう:

SELECT CASE
  WHEN column = 1 THEN 'ABC'
  WHEN column = 2 THEN 'DEF'
  WHEN column = 3 THEN 'GHI'
END AS column
FROM table
WHERE ...
2
Łukasz

REPLACEを単独で使用すると、以下のように使用できます。

SELECT REPLACE(REPLACE(REPLACE(REPLACE(column, '1', 'ABC'), '2', 'DEF'), '3', 'GHI'), '4', 'JKL')
FROM table 
WHERE column IN ('1', '2', '3', '4')

置換はセミコロンで区切るのではなく、他の入れ子にする必要があります。
WHEREの代わりにOR句の詳細INを使用できます

0
Arulkumar