Удалить символы только из SQL - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть строка SQL, и мне нужно удалить последние символы (если это только A-Z),

Оригинал: 001-123456AB
Ожидаемый: 123456

Оригинал: 001-123456
Ожидаемый: 123456

Здесь у меня есть часть 123456. Теперь мне нужно, если эта строка SQL содержит символ, то нужно удалить

(SUBSTRING(GeoNews,0,CHARINDEX('-',GeoNews))

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Вы можете попробовать это:

select reverse(substring(geonews, patindex('%[0-9]%', geonews), len(geonews))) from (
    select reverse(substring(geonews, charindex('-', geonews, 1) + 1, LEN(geonews))) geonews
    from my_table
) a

Он принимает участие после дефиса -, переворачивает его, теперь «конечная» буква будет в начале. Мы удалим его (с substring и patindex, который вернет первое вхождение цифры в строке), а затем вернем строку назад.

0 голосов
/ 06 сентября 2018

Попробуйте это:

DECLARE @String VARCHAR(100)
SET @String = '001-123456AB'
WHILE (@String is not null and @String LIKE '%[a-Z]')
BEGIN  

-- Chop off the end character
   SET @String = 
         CASE LEN(@String) WHEN 0 THEN @String 
            ELSE LEFT(@String, LEN(@String) - 1) 
         END 
END  


SELECT right(@String, len(@String) - charindex('-', @String))
0 голосов
/ 06 сентября 2018

Если буквенные символы появляются только в конце строки, а не в середине, вы можете сделать:

select left(geonews, patindex('%[A-Z]%', geonews + 'A') - 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...