Использование SQL, как я могу получить 2 слова из правого конца поля CHAR (30)?Извлечение правильных двух слов в char поле DB2
namefield = "Меня зовут Билл Смит"
результаты = Bill Smith
Использование SQL, как я могу получить 2 слова из правого конца поля CHAR (30)?Извлечение правильных двух слов в char поле DB2
namefield = "Меня зовут Билл Смит"
результаты = Bill Smith
Это проверялось, но, возможно, что-то вроде:
SELECT REVERSE(SUBSTRING(REVERSE(namefield) , 0, CHARINDEX(' ', REVERSE(namefield), CHARINDEX(' ', REVERSE(namefield), 0)+1))) FROM TABLE
Заменить таблицу с таблицей. Дайте мне знать, если это сработает!
[IBM] [System i Access ODBC Driver] [DB2 for i5/OS] SQL0204 - REVERSE в * Тип LIBL * N не найден. – macunte
Если вы используете LOCATE_IN_STRING, вы можете сказать -X искать назад - как op. к charindex, которые только смотрят вперед.
select
-- locate_in_string(str,' ',-1),
-- substr(str,1,locate_in_string(str,' ',-1)-1),
-- length(str) - locate_in_string(str,' ',-1),
-- locate_in_string(str,' ',-7),
-- locate_in_string(str,' ',(-1* (length(str) - locate_in_string(str,' ',-1))) -2),
-- substr(str,1,11) || '<-',
-- substr(str,1,locate_in_string(str,' ',(-1* (length(str) - locate_in_string(str,' ',-1))) -2)-1),
substr(str,locate_in_string(str,' ',(-1* (length(str) - locate_in_string(str,' ',-1))) -2))
FROM (
VALUES('My name is Bill Smith')
) AS T(str)
Здесь я начинаю в точке последнего пробела и ищем прежнее пространство, а затем передаю это подстроке.
Я включил мой код тестирования выше - вы можете увидеть, как я могу проверить различные части, удалив комментарий к этой линии. Этот метод мой полезен при тестировании.
В какой платформе/версии DB2 вы работаете? –
DB2/400 SQL v 07.02.0015 – macunte