一种方法是结合 patindex、reverse、len 和 left。
首先,创建并填充示例表(请在您以后的问题中保存此步骤):
CREATE TABLE MyTable
(
Col nvarchar(20)
);
INSERT INTO MyTable(Col) VALUES
('abcd-1-efgh12'),
('adc-1-def1'),
('a1-1-a1'),
-- Added some edge cases:
('123-fa'), -- last chars are not digits
('asdf'), -- no digits at all
('123'); -- no non-digit chars at all
查询:
SELECT Col, LEFT(Col, LEN(Col)+1-PATINDEX('%[^0-9]%', REVERSE(Col)))
FROM MyTable
结果:
科尔 | (无栏名) |
---|---|
abcd-1-efgh12 | abcd-1-efgh |
adc-1-def1 | adc-1-def |
a1-1-a1 | a1-1-a |
123-fa | 123-fa |
asdf | asdf |
123 | 123 |
注意:如果字符串仅包含数字,则不会更改。
您可以在 db<>fiddle
上观看现场演示