【发布时间】:2017-07-02 11:59:00
【问题描述】:
我有一个名为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 函数似乎相当无效,有没有办法避免这种情况? (这将在一个大数据库上使用,该查询的结果将用作键)。
编辑:更新为新数据库,有时包含额外的- 或. 以及-。
DECLARE @T as table
(
dats nvarchar(10)
)
INSERT INTO @T VALUES
('111BWA30'),
('115-200-11')
('115-22.4-1')
('10.000.22')
('600F-FFF200')
【问题讨论】:
-
您发布的查询语法不正确。
标签: sql-server unicode patindex