Я пытаюсь эмулировать функцию в SQL, которую клиент создал в Excel.По сути, они имеют уникальное 10-значное числовое значение (VARCHAR) в качестве первичного ключа в одной из своих систем баз данных предприятия.В другой базе данных им требуется уникальный 5-значный буквенно-цифровой идентификатор.Они хотят, чтобы это 5-значное буквенно-цифровое значение представляло собой 10-значное число.Поэтому в Excel они разбили 10-значное число на пары, затем преобразовали каждую из этих пар в шестнадцатеричное значение, а затем соединили их вместе.
Уравнение EXCEL:
= IF (VALUE (MID (A2,1,4))>> 0, DEC2HEX (VALUE (MID (A2,3,2))) & DEC2HEX (VALUE (MID (A2,5,2))) и DEC2HEX(ЗНАЧЕНИЕ (MID (A2,7,2))) & DEC2HEX (ЗНАЧЕНИЕ (MID (A2,9,2))), DEC2HEX (ЗНАЧЕНИЕ (MID (A2,5,2))) & DEC2HEX (ЗНАЧЕНИЕ (MID (А2,7,2))) & DEC2HEX ((VALUE (MID (A2,9,2)))))
Мне нужен SQL-эквивалент этого.Конечно, если кто-то знает лучший способ достичь своей цели «5-значный буквенно-цифровой идентификатор», основанный на 10-значном числе, я весь в ушах.
ДОБАВЛЕНО 02.08.2011
Прежде всего, спасибо всем за ответы.Приятно видеть людей, готовых помочь и даже наслаждающихся этим!Основываясь на всех ответах, я склонен сказать своему клиенту, что они намерены, это здраво, только их метод не подходит.Я также хотел бы рекомендовать решение.Таким образом, проблема остается, только слегка измененная:
ВЫЗОВ: В SQL возьмите уникальную ЦИФРОВУЮ 10-значную строку и представьте ее АЛЬФАНЕРИЧЕСКИ как можно меньше символов.Результирующая строка также должна быть уникальной.
Обратите внимание, что первые 3-4 символа в 10-значной строке, вероятно, будут нулями, и что они могут быть удалены, чтобы сократить результирующую буквенно-цифровую строку.Не обязательно, но, возможно, полезно.