2017-01-31 20 views

ответ

0

Это проверялось, но, возможно, что-то вроде:

SELECT REVERSE(SUBSTRING(REVERSE(namefield) , 0, CHARINDEX(' ', REVERSE(namefield), CHARINDEX(' ', REVERSE(namefield), 0)+1))) FROM TABLE 

Заменить таблицу с таблицей. Дайте мне знать, если это сработает!

+0

[IBM] [System i Access ODBC Driver] [DB2 for i5/OS] SQL0204 - REVERSE в * Тип LIBL * N не найден. – macunte

0

Если вы используете 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) 

Здесь я начинаю в точке последнего пробела и ищем прежнее пространство, а затем передаю это подстроке.

https://www.ibm.com/support/knowledgecenter/en/SSEPGG_9.7.0/com.ibm.db2.luw.sql.ref.doc/doc/r0054098.html

Я включил мой код тестирования выше - вы можете увидеть, как я могу проверить различные части, удалив комментарий к этой линии. Этот метод мой полезен при тестировании.