У меня есть строка под названием Dats
, который является либо общей xxxx-nnnnn
(Внешность, где x
является характер, и n
является числом) или nnn-nnnnnn
.Проблема с PATINDEX и Юникода символа «-»
Я хочу вернуть только цифры.
Для этого я попробовал:
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
для каждой строки, есть ли способ избежать этого? (Это будет использоваться в большой базе данных, где результат этого запроса будет использоваться в качестве ключей).
EDIT: Обновлено как новая база данных, иногда содержит дополнительные -
или .
вместе с -
.
DECLARE @T as table
(
dats nvarchar(10)
)
INSERT INTO @T VALUES
('111BWA30'),
('115-200-11')
('115-22.4-1')
('10.000.22')
('600F-FFF200')
Запрошенный вами запрос является синтаксически неправильным. –