2015-10-15 5 views
0

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

Я использую SQL Developer и имею таблицу, позволяющую называть ее HR_Employees. Эта таблица, которую я должен использовать для заполнения таблицы фактов, мы будем называть ее Fact_Key. Эта таблица фактов имеет 3 столбца, включая описание, а также столбец Employee_Key (который является первичным ключом).

Задача, которую я имею, состоит в том, чтобы выяснить способ создания employee_key из поля Department_ID. Для половины компании это автоматически создается на основе некоторой информации о зарплате и помещается в таблицу Fact_Key, однако для другой половины (которая объединяется в первую половину) они не используют одну и ту же систему расчета заработной платы, поэтому это не сработает для нас , Я должен взять идентификатор Department_ID и использовать его для создания employee_key, объединив его с другими полями (например, employee_number). См. Ниже:

INSERT INTO FACT_KEY (Employee_Key, Description) 
SELECT RPAD(Employee_Number||Deptartment_ID, 15,'0'), EmployeeJob_Code 
FROM HR_EMPLOYEES 

Я заполняю это, чтобы сохранить все ключи с последовательной длиной в 15 символов. Проблема, с которой я столкнулся, - это поле Employee_Key - это числовой тип данных, но у идентификатора Department_ID есть нечисловые символы в нем в случайных местах. Мне нужен способ удалить эти символы или, желательно, изменить их на свои ASCII-копии. Есть ли простой способ сделать это?

Все, что я видел, кажется слишком сложным, и я искал более простой способ сделать это (включая только одну или две функции), поскольку это происходит в хранимой процедуре, и я был направлен, чтобы это было просто. Любая помощь будет оценена, спасибо!

+0

вы можете не изменить тип данных '' employee_key' к varchar'? –

+0

Реальная выборка того, что вы хотите сделать, поможет много; Здесь отличное место для начала. http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

ответ

0

Просто используйте regexp_replace, пример:

select REGEXP_REPLACE('123A45B67CCC89', '[^[:digit:]]','') from dual 

возвращается: 123456789

Смежные вопросы