Есть ли способ отредактировать подстроку в SQL? - PullRequest
0 голосов
/ 01 октября 2019

Например, допустим, у меня есть запрос на выборку:

    SEL SUBSTRING(TXT,5,10) FROM RANDOM_DB.BDAYINFO

, и это возвращает такие вещи, как

    01DEC99/M/ 

, а также

    01DEC9999/

есть данные, которыевозвращается в обоих этих форматах

Я пытаюсь избавиться от / M / в конце первого и / в конце последнего. Сейчас я сосредоточен на том, чтобы избавиться от /M/.

До сих пор я пробовал:

    SEL SUBSTRING(TXT,5,10) CASE WHEN SUBSTRING(TXT,5,10) IS LIKE '%/M/' THEN SEL SUBSTRING(TXT,5,7) FROM RANDOM_DB.BDAYINFO

это говорит о том, что подстрока заканчивается на '/ M /', что в данном случае означает мужской

Я также пытался использовать TRIM так:

   SELECT TRIM('/M/' FROM SUBSTRING(TXT,5,10)) FROM RANDOM_DB.BDAYINFO

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Попробуйте этот метод - Использование LEFT (Samplevalue, CHARINDEX ('/', Samplevalue + '/') - 1)

DECLARE @Samples TABLE (Samplevalue VARCHAR(30));
INSERT INTO @Samples VALUES ('01DEC99/M/ '),('01DEC9999/');
SELECT LEFT(Samplevalue,CHARINDEX('/',Samplevalue + '/')-1) AS EXPECTED_RESULT FROM @Samples;
0 голосов
/ 01 октября 2019

С этим оператором CASE:

SELECT 
  CASE 
    WHEN SUBSTRING(TXT,5,10) LIKE '%/M/' THEN SUBSTRING(TXT,5,7) 
    WHEN SUBSTRING(TXT,5,10) LIKE '%/' THEN SUBSTRING(TXT,5,9) 
    ELSE SUBSTRING(TXT,5,10)
  END
FROM RANDOM_DB.BDAYINFO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...