web-dev-qa-db-ja.com

2桁の数字の置き換え

テキスト値に置き換える必要のある数値の列があります。

私はSQLステートメントを使用しました:

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(loanstatus、 '1'、 'Apple')、 '2'、 'Banana')、 '3'、 'Citrus')、 '4'、 'Deer')、 '5'、 'Elephant')、 '6'、 'Fruits')、 '7'、 'Grey')、 '8'、 'Hope')、 '9'、 'Island')、 '10'、 'June')、 '11'、 'Kate')、 '12'、 'Live')、 '13'、 'Moon')

Singles( ')の代わりにDouble Quotations( ")を使用してみました。また、String(' 1 ')とString(" 1 ")を使用してみました。

値1から9は正常に機能します。問題は、挿入値が「11」の場合、出力はAppleAppleです。「12」の場合、「AppleBanana」は11の場合は「Kate」、12の場合は「Live」として出力されます。

2
John

倍増は、ネストされた括弧が原因です。処理は最も内側のペアから始まり、外側に向かって進みます。この場合、最も内側の置換は1 -> Appleであり、11 -> Apple1 -> AppleAppleを意味します。

ネストを逆にして、最も長いソース値から始めて、外側に向かって作業します。さらに良いことに、マッピングを別のテーブルに配置して結合します(Foxproが結合のような構文をサポートしている場合)。

1
Michael Green