Как проверить мой запрос, если длина поля равна 8, а затем добавить «+973» - PullRequest
0 голосов
/ 28 января 2020

В настоящее время у меня есть несколько полей в моей базе данных, которые состоят из 8 чисел. Я хочу добавить проверку в моем запросе, чтобы, если число было 3888991, я должен был добавить +973 в начале, используя CASE

select * 
from contact 
where length(mobile) = 8

Original                '38881991'
After adding validation '+97338881991'

Ответы [ 3 ]

1 голос
/ 28 января 2020

Обратите внимание, что эта строка: 3888991 имеет длину всего 7 символов.

С помощью этого запроса вы выберете все значения из вашего столбца, которые состоят из 8 символов длинный. Если это правда, вы добавите «+973» к ним. Но это выбор. Если вы хотите обновить оператор, пожалуйста, оставьте комментарий. (В этом примере имя столбца называется number_phone, а таблица называется test).

Используйте || для объединения двух строк, как в примере.

select case when length(number_phone) = 8 then '+973' || number_phone
            else number_phone
       end
from test;

Здесь DEMO

Вы также можете использовать DECODE:

select decode(length(number_phone), 8, '+973' || number_phone,number_phone ) 
from test;

Вот DEMO

А если вы собираетесь выбирать только цифры длиной 8 символов и не хотите выбирать те, которые не являются таковыми:

SELECT '+973' || number_phone as number_phone
FROM TEST 
WHERE LENGTH(number_phone) = 8;

Вот ДЕМО

0 голосов
/ 28 января 2020

Я бы использовал ключевое слово BETWEEN вместо LENGTH, чтобы использовать index в столбце MOBILE, если оно есть. Для конкатенации используйте CASE и || (оператор конкатенации)

SELECT
    CASE
        WHEN MOBILE BETWEEN 10000000 AND 99999999 THEN '+973' || MOBILE
        ELSE MOBILE
    END
FROM
    CONTACT

Cheers !!

0 голосов
/ 28 января 2020

Попробуйте это утверждение:

SELECT (CASE 
          WHEN LENGTH(MOBILE) = 8 THEN CONCAT('+973', MOBILE) 
          ELSE MOBILE 
        END) AS MOBILE 
FROM CONTACT 
WHERE LENGTH(MOBILE) = 8;

Используйте CASE для подтверждения номера мобильного телефона и используйте CONCAT, чтобы прикрепить строку МОБИЛЬ.

Вот гораздо более чистый способ сделать это

ДЕМО

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...