2

非常に単純な私はそのような文字列の列を持っています:

 abc1
 abc2
 abc3
 abc4
 abc5

この列から「abc」を削除し、右側の数字のみを保持する必要があるため、列には次のような数字のみが含まれます。

 1
 2
 3
 4
 5

そんな風に思ったけどうまくいかない

update table2
-> set col1 = case when 'abc1' then 1
-> else end;

テキストを連結する方法は知っていますが、元に戻す方法はわかりません...助けてください^^;

4

2 に答える 2

3

@McArtheyはすでにそれをほのめかしましたが、これは「abc」が一貫して「abc」である場合(つまり、長さが変わらない場合)は簡単です。

さまざまな文字列関数の中で、特にRIGHT(). これにより、文字列から一定数の文字を選択できます。例えば

SELECT RIGHT('abc3',1) -- Results in "3"
SELECT RIGHT('abc3',2) -- Results in "c3"

関数と組み合わせるとLENGTH()、数字は 3 番目の文字を超えたものであると結論付けることができます。すなわち

SELECT RIGHT('abc3',LENGTH('abc3')-3) -- Results in "3"

明らかにハード文字列 ( 'abc3') を使用していますが、これらは簡単に列名に置き換えることができます。

ここでの注意点は、これらはすべて固定長の文字プレフィックスに基づいているということです。例の「abc」がより可変(変更)であるほど、列から数値を選択するのが難しくなります。

于 2011-09-06T04:29:23.123 に答える
1

これらが1桁の値の場合、使用できます

select right(column,1) ...

より複雑な場合は、REGEXPドキュメントが役立つ場合もあります。

列を変更しようとしている場合は、値を個別に取得してから連結する必要があります。何を達成しようとしているのかわからないので、正確な答えを出すのは難しいですが、SUBSTR を使って別の値を取得することができます。

「abc」を取得: SUBSTR(列, 1,3)

数字を取得: SUBSTR(列, 4)

于 2011-09-06T04:25:54.197 に答える