Microsoft SQL Server 删除前导零和所有字符字母

问题描述 投票:0回答:1

在 SQL Server 表中,我有以下值和 我想要

055Z84 -> 55Z84

055t84 -> 5584

65588H -> 65588

A55804 -> 55804

-- Create a sample table
CREATE TABLE YourTable (
    YourColumn VARCHAR(50)
);

-- Insert sample data
INSERT INTO YourTable (YourColumn) VALUES
('055Z84'),
('055t84'),
('65588H'),
('A55804');

-- Update the table to remove leading zeros and alphabetical characters
UPDATE YourTable
SET YourColumn = 
    CASE 
        WHEN YourColumn LIKE '%[a-zA-Z]%' THEN 
            REPLACE(SUBSTRING(YourColumn, 
                              PATINDEX('%[1-9]%', YourColumn), 
                              LEN(YourColumn) - PATINDEX('%[1-9]%', YourColumn) + 1),
                    '0', '')
        ELSE 
            CASE WHEN YourColumn <> '0' 
                 THEN LTRIM(REPLACE(YourColumn, '0', ''))
                 ELSE '0' 
            END
    END
WHERE YourColumn LIKE '%[a-zA-Z]%' OR YourColumn LIKE '0%';

-- View the updated table
SELECT * FROM YourTable;
sql-server
1个回答
0
投票

LTRIM
RTRIM
,假设 2022 年以上,但有第二个参数可用于修剪特定字符:

SELECT LTRIM(YourColumn,'0')
FROM dbo.YourTable;

db<>小提琴

© www.soinside.com 2019 - 2024. All rights reserved.