2015-10-01 3 views
0

У меня есть требование, когда я читаю table_name из user_tables и добавляю 6 букв после имени таблицы во время выполнения, например.Сократить имена таблиц в Oracle

prev_table_name= F_ALIGN_PROF_PRD_MTH_SLS_NM2 
New_table_name = prev_table_name_ABCDE 

поэтому новое имя таблицы превышает 30 символов, и я получаю сообщение об ошибке.

Чтобы решить эту проблему, я ищу метод, поэтому я могу сократить имя_таблицы во время выполнения и добавить к ней 6 букв.

Просьба предложить какой-либо обходной путь Fo этой проблемы

+0

Похоже, что вам понадобится substr() имя предыдущей таблицы до 24 символов. – Boneist

+0

Я могу это сделать, но table_name будет F_ALIGN_PROF_PRD_MTH_S, что создаст путаницу при чтении – anurag

+0

Вы можете удалить до последнего '_', как это F_ALIGN_PROF_PRD_MTH – Moudiz

ответ

0

Хотите ли вы такого результата?

select SUBSTR('prev_table_name_ABCDE' , 1, 6) from dual 

Result : prev_t 

Если вы хотите читаемый имя, которое вы можете принять к последнему '_'

SELECT SUBSTR('prev_table_name_ABCDE', 1 ,INSTR('prev_table_name_ABCDE', '_',1,3)-1) 
FROM dual; 

Result :prev_table_name 
+0

нет, я ищу что-то, что сократит мое имя_таблицы, не теряя его удобочитаемости – anurag

+0

@anurag как я уже говорил выше, вы хотите, как этот «prev_table_name» или скажите мне, что выходной результат вы хотите – Moudiz

+0

я хочу привести как prev_name = F_ALIGN_PROF_PRD_MTH_SLS_NM2 и new_name = F_ALGN_PRF_PRD_MTH_SLS_NM_ABCD – anurag

1

Как о чем-то вроде этого, то?

select substr(substr('F_ALIGN_PROF_PRD_MTH_SLS_NM2', 1, 24), 
       1, 
       instr(substr('F_ALIGN_PROF_PRD_MTH_SLS_NM2', 1, 24), '_', -1)) substr_table_name 
from dual; 

SUBSTR_TABLE_NAME  
--------------------- 
F_ALIGN_PROF_PRD_MTH_ 
0

Я нашел один способ сделать это (св временным решение, но он будет работать)

Прочитайте имя таблицы и удалить все гласные и номер от него.

+0

показать мне запрос пожалуйста – Moudiz

+0

Что делать, если нет гласные или номера удалить или удалить их, оставит имя табло более 24 символов? – Boneist

+0

вот почему его временное решение, так как мои все таблицы имеют в нем гласные – anurag

0

как насчет создания новой таблицы для хранения старого и нового tablename?

my_table 
    oldname F_ALIGN_PROF_PRD_MTH_SLS_NM2 
    newname TEMP_ABCD