Выберите все справа от конкретного символа - PullRequest
2 голосов
/ 17 мая 2019

Учитывая эти данные:

Home: (708) 296-2112  

Я хочу, чтобы все находилось справа от символа :.

Это то, что я пока имею, но я не получаю результатов:

right(phone1, locate(':', phone1 + ':')-1) phone

Если я использую left вместо right, я получаю просто "HOME" - только для целей тестирования.Я знаю, что я близко, но я что-то упускаю.

Ответы [ 4 ]

1 голос
/ 17 мая 2019

Вместо этого вы можете использовать SUBSTRING (может быть SUBSTR в зависимости от вашей версии):

SELECT SUBSTRING(phone1, LOCATE(':', phone1) + 1, LENGTH(phone1))
FROM yourtable
1 голос
/ 17 мая 2019

Вот способ сделать это без жесткого кодирования в Home:, поэтому вы также можете использовать Office: или Mobile: или Fax:, или любое другое слово, за которым следует двоеточие.

При этом используются возможности сценариев ADS для использования переменной и встроенной таблицы System.iota в одну строку (аналогично Oracle dual).Вы можете просто использовать последнюю строку, заменив test именем вашего столбца и system.iota именем таблицы.

declare test string;
set test = 'Home: (708) 296-2112';
select substring(test, position(':' in test) + 1, length(test)) from system.iota;
0 голосов
/ 17 мая 2019

Вы можете использовать ПРАВУЮ функцию следующим образом:

RIGHT(phone1, LEN(phone1)-CHARINDEX(':', phone1))
0 голосов
/ 17 мая 2019

Вы были на правильном пути, но ваша алгебра выключена. Вы хотите взять всю длину смещения строки положением двоеточия, минус один:

right(phone1, length(phone1) - locate(':', phone1) - 1)
...