我目前正在从SQL Server访问表视图,并在导出之前根据需要编写自定义SQL查询以检索/过滤/创建自定义列。现在,在该视图中,其中一列的文本值如下
Description
Transaction 12345678-1
Tx234567890-2
45678901-12
55667788-20
Inv# 12457800-2
现在我要做的就是创建一个自定义列,该列将从字符串中提取所有数值和-如下所示。
Description
12345678-1
234567890-2
45678901-12
55667788-20
12457800-2
如果可以的话,将不胜感激。
原始数据和所需的输出-https://drive.google.com/file/d/1ze-S15kWi8qcLro8xx9vpSgnPIYCXLSa/view?usp=sharing
提前谢谢您。
答案 0 :(得分:2)
尝试一下:
declare @t table (name varchar(50))
insert into @t values ('Tx234567890-2'),('Inv# 12457800-2')
select substring(name,PATINDEX('%[0-9]%',name),len(name)) from @t
答案 1 :(得分:0)
我试图识别并从字符串中提取的模式如下
DDDDDDDD-D或DDDDDDDD-DD
D代表数字
所以以下内容对我有用
SELECT description,
CASE
WHEN PATINDEX('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9]%', description)>0 THEN SUBSTRING(description, PATINDEX('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9]%', description), 11)
WHEN PATINDEX('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9]%', description)>0 THEN SUBSTRING(description, PATINDEX('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9]%', description), 10)
END AS refno,
* 从 XXXXX 其中(类似'%[0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]-[0- 9]%'或类似'%[0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]- [0-9] [0-9]%')