2016-02-24 2 views
0

Я хочу, чтобы изменить порядок строки, как: имя/фамилию по фамилии/имени или имя/фамилию по фамилии/имени (с учетом на пространствах после /)изменить порядок строки в PL/SQL

ниже моей request.but вторая часть является неправильным:

select SUBSTR ('name/surname' , INSTR ('name/surname','/')+1) ||SUBSTR ('name/surname' , 1,INSTR('name/surname','/')-1) 
from dual 
+0

MySQL и/или Oracle? (Не помещайте те продукты, которые не задействованы ...) – jarlh

ответ

2

Использование регулярных выражений:

SELECT REGEXP_REPLACE('name/surname', '^(.*?)/(.*)$', '\2/\1') FROM DUAL; 

или зачистка аль л пробелы:

SELECT REGEXP_REPLACE(' name/surname ', '^\s*(.*?)\s*/\s*(.*?)\s*$', '\2/\1') FROM DUAL; 

или сохраняющих пробелы до и после косой черты (и кромкообрезные ведущий/обучение пробельные):

SELECT REGEXP_REPLACE(' name/surname ', '^\s*(.*?)(\s?/\s?)(.*?)\s*$', '\3\2\1') FROM DUAL; 

Использование строковых функций:

WITH names (text) AS (
    SELECT 'name/surname' FROM DUAL 
) 
SELECT SUBSTR(text, INSTR(text, '/') + 1) || '/' || SUBSTR(text, 1, INSTR(text, '/') - 1) 
FROM names; 

или кромкообрезные пробелы:

WITH names (text) AS (
    SELECT ' name/surname ' FROM DUAL 
) 
SELECT TRIM(SUBSTR(text, INSTR(text, '/') + 1)) || '/' || TRIM(SUBSTR(text, 1, INSTR(text, '/') - 1)) 
FROM names; 
+0

Привет Это работает хорошо. Но у меня может быть такое пространство, как: имя/фамилия. В этом случае, что я должен добавить к запросу выше? – user2425416

+0

Является ли пространство причиной определенной проблемы? – MT0

+0

Привет, у меня есть имя/фамилия или имя/фамилия пользователя, запрос должен работать для обоих из них. Я должен учитывать пробел между фамилией и фамилией. – user2425416

0

select substr ('firstname/lastname', instr ('firstname/lastname', '/') + 1) || '/' || substr ('firstname/lastname', 1, instr ('firstname/lastname', '/') - 1) from dual;

+0

Привет Это не работает: я получил/фамилию firstname/вместо: lastname/firstname – user2425416

+0

Я еще раз отредактировал запрос запроса – Sandeep

+0

Привет, он все еще не работает 't work – user2425416