记录看起来像这样
当前价值
- 1.主席
- 2.表
- 8端口开关
- 3.电缆
....
期望值
椅
表
8端口切换
电缆 .....
我试过了表达式
SUBSTRING([Column], PATINDEX('%[A-Z]%', [Column]), LEN([Column]))
并且可以正常删除记录开头的数值,但我希望它跳过 8端口切换记录中的数字。
由于
答案 0 :(得分:1)
以下表达对我有用....
Replace([Column],LEFT([Column],Charindex('.',[Column],-1)),'')
由于
答案 1 :(得分:0)
一个选项就是获取实际以数字开头的那些行:
select ... where column like '[0-9]. %'
这当然只适用于单位数字,但你可能不得不制作更复杂的逻辑来处理2位数字。
答案 2 :(得分:0)
试试这个。我还删除了前两个字符(" - ")。
DECLARE @test_table TABLE (value NVARCHAR(MAX))
INSERT INTO @test_table
SELECT '- 1. Chair'
UNION ALL
SELECT '- 2. Table'
UNION ALL
SELECT '- 8 Port Switch'
UNION ALL
SELECT '- 3. Cable'
UNION ALL
SELECT '- 14. Router'
SELECT SUBSTRING(value, PATINDEX('%[0-9].%', value) + 2, LEN(value))
FROM @test_table
答案 3 :(得分:0)
试试这个:
SELECT
REGEXP_REPLACE(MY_TEXT, '^-\s*[0-9]+\s*\.*\s*') AS MY_TEXT
FROM
(
SELECT '- 1. Chair' AS MY_TEXT FROM DUAL UNION
SELECT '- 2. Table' AS MY_TEXT FROM DUAL UNION
SELECT '- 8 Port Switch' AS MY_TEXT FROM DUAL UNION
SELECT '- 3. Cable' AS MY_TEXT FROM DUAL
)
WHERE REGEXP_REPLACE(MY_TEXT, '^-\s*[0-9]+\s*\.*\s*') != 'Port Switch'
输出结果为:
主席
表
电缆