SQL:如何解析包含重复字符的字符串?

时间:2021-02-19 16:10:48

标签: sql-server string tsql parsing

我想解析 value 列并生成 output 列。问题是我需要从右边开始解析输出。如何解析重复的字符?

| value                          | output    |
|--------------------------------|-----------|
| ABC - DEF - 0100 - 0100 - 0100 | ABC - DEF |
| GHIJ KLM - 0100 - 0100 - 0100  | GHIJ KLM  |
| NOPQR - 0100 - 0100 - 0100     | NOPQR     |
| STU-VWXYZ - 0100 - 0100 - 0100 | STU-VWXYZ |
| ABD                            | ABD       |
CREATE TABLE #CHAR (value VARCHAR(MAX), output VARCHAR(MAX))

INSERT INTO #CHAR VALUES
('ABC - DEF - 0100 - 0100 - 0100', 'ABC - DEF')
,('GHIJ KLM - 0100 - 0100 - 0100', 'GHIJ KLM')
,('NOPQR - 0100 - 0100 - 0100', 'NOPQR')
,('STU-VWXYZ - 0100 - 0100 - 0100', 'STU-VWXYZ')
,('ABD', 'ABD')

SELECT * FROM #CHAR

接受的答案

SELECT t.*,
CASE WHEN t.value LIKE '%-%' THEN LEFT(value, PATINDEX('% - [0-9]%', value))
    ELSE t.value
    END
FROM #CHAR t

1 个答案:

答案 0 :(得分:2)

在 SQL Server 中,您可以使用 LEFT()PATINDEX()

select t.*,
       left(value, patindex('% - [0-9]%', value))
from t;

Here 是一个 db<>fiddle。

相关问题