我已经完成了生成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 等行。但我需要不同的风格。
我使用脚本时的数据库输出:
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
你知道我哪里有问题吗?