我有一个查询,可以从ID中添加或删除零。
SELECT
LEFT(STUFF(SystemID +
REPLICATE('0', 9), 7, 0, REPLICATE('0', 9 - LEN(SystemID))), 9) as OBJECT
FROM
Products
所以结果将是这样的:
ID1230034
如何删除ID' ID'使用此查询?所以它应该是:
1230034
感谢您的帮助:)
答案 0 :(得分:2)
您可以使用stuff
将字符串的前2个字符替换为空字符串:
SELECT STUFF(LEFT(STUFF(SystemID +
REPLICATE('0',9),7,0,REPLICATE('0',9-LEN(SystemID))),9), 1, 2, '') as OBJECT
FROM Products
答案 1 :(得分:1)
使用替换功能。
SELECT REPLACE(LEFT(STUFF(SystemID +
REPLICATE('0',9),7,0,REPLICATE('0',9-LEN(SystemID))),9),'ID','') as OBJECT from Products
答案 2 :(得分:0)
使用功能Right() - > https://msdn.microsoft.com/en-us/library/ms177532.aspx
假设您的ID始终是相同的位数,请执行Right(ID,7)
替代解决方案:
使用子串函数 - > http://www.w3resource.com/mysql/string-functions/mysql-substring-function.php
如果位数发生变化,这可能会有所帮助:)
答案 3 :(得分:0)
可以找到可以处理前缀/后缀非数字字符的更通用的解决方案here:
CREATE FUNCTION dbo.udf_GetNumeric
(
@strAlphaNumeric VARCHAR(256)
)
RETURNS VARCHAR(256)
AS
BEGIN
DECLARE @intAlpha INT
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric)
WHILE @intAlpha > 0
BEGIN
SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '' )
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric )
END
RETURN ISNULL(@strAlphaNumeric,0)
END
GO
用法:
SELECT dbo.udf_GetNumeric(SystemID)
from from Products