删除' ID'来自SQL查询

时间:2017-02-20 13:57:45

标签: sql sql-server

我有一个查询,可以从ID中添加或删除零。

SELECT 
    LEFT(STUFF(SystemID +
               REPLICATE('0', 9), 7, 0, REPLICATE('0', 9 - LEN(SystemID))), 9) as OBJECT 
FROM
    Products

所以结果将是这样的:

ID1230034

如何删除ID' ID'使用此查询?所以它应该是:

1230034

感谢您的帮助:)

4 个答案:

答案 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