Sql查询,在带有字符和数字的字符串之间添加零
通过在id中添加包含字母和数字的零来更新id的通用sql查询是什么?在字符和数字00之间需要填充,例如QTX23675应变成QTX0023675Sql查询,在带有字符和数字的字符串之间添加零,sql,sql-server,Sql,Sql Server,通过在id中添加包含字母和数字的零来更新id的通用sql查询是什么?在字符和数字00之间需要填充,例如QTX23675应变成QTX0023675 UPDATE Table SET QID = 'QTX0023675' WHERE QID='QTX23675'; 有许多记录需要更新,我发现查询的前导为零。 尝试拆分字符串。在大多数数据库中,您可以执行以下操作: UPDATE Table SET QID = CONCAT(LEFT('QTX0023675', 3), '00
UPDATE Table
SET QID = 'QTX0023675'
WHERE QID='QTX23675';
有许多记录需要更新,我发现查询的前导为零。
尝试拆分字符串。在大多数数据库中,您可以执行以下操作:
UPDATE Table
SET QID = CONCAT(LEFT('QTX0023675', 3), '00', RIGHT('QTX0023675', 5))
WHERE QID LIKE '________';
在任何给定的数据库中,可能会有一些更简单的方法,但想法是相同的。尝试此方法以使结果动态化
UPDATE TABLE SET QID= STUFF(QID,PATINDEX('%[0-9]%',QID),0,'00')
WITH CTE
AS
(
SELECT Val = 'XTP231'
)
SELECT
*,
NewVal = SUBSTRING(Val,1,PATINDEX('%[0-9]%',Val)-1)+'00'+SUBSTRING(Val,PATINDEX('%[0-9]%',Val),LEN(Val))
FROM CTE
结果如下
这个问题不是很清楚……字符串格式总是一样的吗?i、 e.总是需要在字符串的第4位插入,还是会有所变化?你总是有3个字母作为后缀吗?正如@MisterPositive指出的,问题并不清楚。您尚未定义模式,因此我们不知道需要在何处进行拆分。你能有一个有8个文本值的字符串,这样它就可以在末尾加上2个零吗?你能不能有一个没有文字的,这样就可以在前面加上零?最终结果总是10个字符吗?是否需要添加2个以上的零?未知数太多。请用您正在使用的数据库标记您的问题。谢谢您的回答。我正在使用SQL server。模式总是相同的:3个字符5个数字,并且总是需要插入到字符串中的位置4。不过,您可以使用这个。为了安全起见,如果有任何模式不匹配的话,谢谢你的回答。