0

少し問題が発生しました:ms sqlの数値から「0」を変更/減算する必要があります。小さな例:

私は 1000008448 を得ました そしてそれはある必要があります: 100008448 テーブル全体で...

誰もがそれを行う方法を知っていますか? (私は MS SQL のスキルがありません :( )

編集:その他の例:

100323 は 10323 になります 10233 は 1233 になります 10000 は 1000 になります...

4

5 に答える 5

4

x0以下はあなたが望むことをするかもしれません(それは最上位桁をに「置き換えます」x):

UPDATE table SET col=col
    -power(10, floor(log10(col)))*floor(col/power(10, floor(log10(col))))
    +power(10, floor(log10(col))-1)*floor(col/power(10, floor(log10(col))))

sqlFiddleを参照してください:)

于 2012-09-19T08:36:58.200 に答える
0

これは、これまでに投稿したすべての例で機能します。これは文字列操作として実行されますが、SQL Server よりも優れたツールを使用することをお勧めします。

declare @T table (Frm int not null,Too int not null)
insert into @T (Frm,Too) values
(1001, 101),
(1000008448, 100008448),
(100323, 10323),
(10233, 1233),
(10000, 1000)

select
    CONVERT(int,SUBSTRING(Frm,1,1) + SUBSTRING(Frm,3,20)) Frm,Too
from
    (select CONVERT(varchar(20),Frm) Frm,Too from @T) t

結果:

Frm         Too
----------- -----------
101         101
100008448   100008448
10323       10323
1233        1233
1000        1000

しかし、実際のデータには、これが機能しないケースが他にもあることは間違いありません。

于 2012-09-19T09:19:09.240 に答える
0
update yourtable set
      yourcolumn=
        cast(stuff(cast(yourcolumn as varchar),
                    CHARINDEX('0',cast(yourcolumn as varchar)),1,'')
             as int)
      where CHARINDEX('0',cast(yourcolumn as varchar))>0
于 2012-09-19T09:05:44.000 に答える
0

数値フィールドですか?あなたの数字はすべて1000000000の数字ですか?

もしそうなら、

UPDATE table 
SET mycol = mycol - 900000000
于 2012-09-19T08:34:08.757 に答える
-1

問題の最初の言い回しによると、次の SQL ステートメントが必要になります。

update <table>
set <field> = 100008448
where <field> = 1000008448;

もちろん、テーブル名とフィールド名に置き換えます。

上記は特定の問題に対する回答であり、一般的な問題に対する回答ではないため、問題を正しく表現していない可能性があります。

于 2012-09-19T08:30:42.597 に答える