【发布时间】:2018-10-10 09:28:15
【问题描述】:
SQL Server 2012。 需要得到 6 个数字的数字部分,如果没有足够的数字,用前导零填充。 代码为 nvarchar 类型。
TABLE_A 更新前
Id Code
1 s33404tft
2 dd345ui
3 456567t
4 8746
TABLE_A 更新后
Id Code
1 033404
2 000345
3 456567
4 008746
sql脚本:
Update table_A
SET Code=FORMAT((SELECT SUBSTRING(code, PATINDEX('%[0-9]%', code), PATINDEX('%[0-9][^0-9]%', code + 't') - PATINDEX('%[0-9]%', code) + 1) AS Number
FROM Table_A),'000000')
它不起作用。
【问题讨论】:
-
Regex 可能是最好的,或者至少是非常合适的工具,但是 SQL Server 没有太多的 regex 支持。我可能会尝试在 SQL Server 之外处理这个问题。
-
@graphene 你好,看看T H I S
-
提供的链接只给出了数字部分,我在选择部分已经有了。我还需要前导零。
-
@graphene 你没有解释你想要什么,或者问题是什么。一方面,FORMAT 不适用于字符串。您必须先将
CAST该字符串发送到int
标签: sql sql-server sql-server-2012