Вот еще один вариант для вас.
Это предполагает следующее:
- Удаляйте ссуду или конечный пробел только вокруг первого экземпляра '-', все остальные должныбыть сохраненным.
- Только 1 и только 1 начальный или конечный пробел.
- Возможно, уже "очищены" данные.
Попробуйте это сделать:
DECLARE @TestData TABLE
(
[StringData] NVARCHAR(100)
);
INSERT INTO @TestData (
[StringData]
)
VALUES ( 'ADFADSF- ASDFSADF - Q343243498' )
, ( 'ABC - EFSSADF - 2345234532' )
, ( 'EFGSADFSA -ASDFSADF - 2342345234' )
, ( 'ASDF34 - ASDLFASDJF - 234234 - 34324' )
, ( 'ABC-123 - 465 - 685' );
SELECT *
, STUFF([StringData]
, CHARINDEX('-', [StringData]) - 1
, 3
, REPLACE(SUBSTRING([StringData], CHARINDEX('-', [StringData]) - 1, 3), ' ', '')
) AS [CleanStringData]
FROM @TestData;
В основном, это то, что делает полосу от 1 до '-' до одного после, заменяя его тем же символом, но удаляя пробелы, если они существуют.