首页 > 解决方案 > 根据现有文本的长度在 SQL Server 列中插入字符串

问题描述

我有一个 SQL Server 2008 表和一个包含混合字符串的特定列Title,这些字符串都以“WM”开头并以商店编号结尾,例如 WM24or WM1234

我想做的是将所有行标准化为标准格式WMXXXX' (其中XXXX是 4 位商店编号)。So WM26would becomeWM0026WM123will become WM0123,但WM1234不受影响。

这是可行的吗?

标签: sqlsql-serversql-server-2008

解决方案


您可以使用SUBSTRING(Title, 3, LEN(Title) - 2)RIGHT(Title, Len(Title)-2))Replace(Title, 'WM', '')从 中提取数字WM。然后用零填充它。

这是与Substring()

SELECT 'WM' + Right('0000' + Substring(Title, 3, LEN(Title) - 2), 4) as title
FROM yourtable;

或者Right()

SELECT 'WM' + Right('0000' + RIGHT(Title, Len(Title)-2)), 4) as title
FROM yourtable;

或者Replace()

SELECT 'WM' + Right('0000' + Replace(Title, 'WM', '')), 4) as title
FROM yourtable;

推荐阅读