数値として生成するために必要なスクリプトを作成しましたvarchar
が、MySQL でのみ機能しますが、機能しない SQL Server があります。
スクリプトはここにあります:
SET @reference = 0;
UPDATE dbo.expozitura
SET reference_subjektu = LPAD(@reference := @reference + 1, 8, '0')
ORDER BY cislo_subjektu ASC;
SQL Server のこのスクリプトには、まだ構文の問題があります。「:」が好きではありません。
私は自分の問題を説明するので、 にいくつかのvarchar
データがありreference_subjekt
ます。このデータは私にとって重要ではないので、この列に新しいデータを数値として生成する必要がありますが、それはまだvarchar
型です。
例えば
私の実際のデータは次のとおりです。
reference_subjektu
TR.Mac
Orgins
Kernel
Tybru
Serenity
ただし、このデータの前のデータを置き換える必要があります。
reference_subjektu
"00000001"
"00000002"
"00000003"
"00000004"
"00000005" and etc.....
アイデアはありますか?
私の SQL Server 情報:
- バージョン: 11.0.2218
私はあなたのスクリプトを使用してみます: (a1ex07)
私はあなたのコードからこれを使用しています:
UPDATE dbo.expozitura
SET reference_subjektu = replicate('0', 8 - len(rn) ) + b.rn
FROM dbo.expozitura a
INNER JOIN
(
SELECT dbo.expozitura.cislo_subjektu, ROW_NUMBER() OVER (ORDER BY cislo_subjektu) rn
FROM dbo.expozitura
) b ON (b.cislo_subjektu = a.cislo_subjektu)
私の主キーはcislo_subjektu
そして、実際には123456などだけが行に返されます。しかし、私は別のスタイルが必要です。
スクリプトを使用したときの MY DB 出力:
cislo_subjektu reference_subjektu organizace adresa_ulice psc ico
1 1 2 729544866
2 2 0 Linkoln 507 729544866
3 3 0 403 31 729544866
4 4 0 729544866
5 5 0 Linkoln 66 578 99 729544866
6 6 0 558 41 729544866
私がどこに問題があるか知っていますか?