我有一个名为的字符串Dats
,它是一般外观xxxx-nnnnn
(其中x
是字符,n
是数字)或nnn-nnnnnn
.
我只想返回数字。
为此,我尝试过:
SELECT Distinct dats,
Left(SubString(artikelnr, PatIndex('%[0-9.-]%', artikelnr), 8000), PatIndex('%[^0-9.-]%', SubString(artikelnr, PatIndex('%[0-9.-]%', artikelnr), 8000) + 'X')-1)
FROM ThatDatabase
这几乎是我想要的。它会删除常规字符x
,但不会删除 unicode 字符-
。我怎样才能删除它呢?而且,PatIndex
每行都有两个功能似乎相当无效,有没有办法避免这种情况?(这将在一个大数据库上使用,该查询的结果将用作键)。
编辑:更新为新数据库有时包含额外-
的 's 或.
与-
.
DECLARE @T as table
(
dats nvarchar(10)
)
INSERT INTO @T VALUES
('111BWA30'),
('115-200-11')
('115-22.4-1')
('10.000.22')
('600F-FFF200')