|
|
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
Есть такой? необходимо представлять числовые данные (int) в виде стринга например так: '000012' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2003, 16:05 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
Посмотрите функции преобразования форматов данных CAST и CONVERT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2003, 16:09 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
Нашел пока такой вариант: Код: plaintext 2pavelch Спасибо! :о) Но мне не надо преобразования типов, мне как раз надо и хранить в виде '000012', а не получить вместо int 12 - char 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2003, 16:14 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
А ты не перемудрил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2003, 19:26 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
Pavel писал:А ты не перемудрил? Если можно это сделать одной функцией, то перемудрил. Если спрашиваешь: "На фига...". А нада! Хочу составной ключ для дерева... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2003, 11:02 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
А так не пробовал? Это не ключ, это служеьное поле, но идея, думаю, понятна. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2003, 11:12 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
Если это несколько полей (для каждого уровня 1 поле), то думал об этом - кажется заморочно. если это одно поле и формируется путем сцепления ключей (ID), то это как раз попробовал в первую очередь, но - проблемы с сортировкой. Для текста 1, 11, 12...2, 21,22... Во-первых. Во-вторых сложности с вычислением ID произвольного уровня... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2003, 12:14 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
Это одно поле. Проблема с сортировкой отсутствует, а ты, значит, идею не понял. Вычисление ID произвольного уровня это совершенно другая задача, и этим полем и не должна решаться. P.S Я так с деревьями не работаю, это компромисный вариант когда пришлось навешивать доработки к чужой системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2003, 12:34 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
Попробуй так: select right('000000' + cast(12 as varchar(6)), 6) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2003, 12:35 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
2 Pavel Значит и в самом деле твою идею не понял. :о<(( Если можешь расскажи подробнее, что это за цифирки там у тебя - откуда они взялись. Это не сцепка ParentID&ID? IgorM писал:Попробуй так: select right('000000' + cast(12 as varchar(6)), 6) Хорошая идея. Спасибо! Но тоже 2 функции используются. Вопрос только, что быстрее? Мой или твой вариант? Подозреваю, что различия будут нерзличимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2003, 12:54 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
Pavel писал:Вычисление ID произвольного уровня это совершенно другая задача, и этим полем и не должна решаться Почемуууу??? Т.е. почему не совместить приятное с полезным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2003, 12:59 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
Обьясняю идею. Это поле формируется на основании поля, определяющего порядок сортировки. Множество этих значений равно множеству значений ключей. При вставке новой записи автоматом полю сортировки присваивается значение ключа. В процессе работы можно менять (попарно) значения в поле сортировки. В правой части - значение поля именно этой записи, левее - ее предка, еще левее - предка предка, и так до вершины. Обрати внимание, что в приведенном мной примере числа распологаются группами одно под другим. Наверное не очень удачный пример, покажу другой фрагмент: Код: plaintext 1. 2. Обрати внимание, в цифре 10 единица стоит на позицию левее. так что сортировка по этому полю отражает реальное (или желаемое) расположение элементов вдереве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2003, 14:06 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
2Pavel разделитель (.) в вашей модели лишний. Улучшает только читаемость. съедает размер поля. не подскажете, чем это решение лучше связанной таблицы pid|id|level с индексами (pid,id) и (id,pid) (пополняемой так-же триггерами)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2003, 14:24 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
фыыф разделитель (.) в вашей модели лишний. Улучшает только читаемость. съедает размер поля. Абсолютно точно. После отладки оставил для улучшения читаемости глазками. Практического смысла никакого. не подскажете, чем это решение лучше связанной таблицы pid|id|level с индексами (pid,id) и (id,pid) (пополняемой так-же триггерами)? Это самое корявое, но самое быстрое (всмысле скорости работы) решение. К тому же, как я уже писал, в той ситуации другое решение применить было проблематично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2003, 15:09 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
Да, чтобы никого не ввести в заблуждение, естественно в таблице присутствует id, pid. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2003, 15:10 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
Обрати внимание, в цифре 10 единица стоит на позицию левее. А за счет чего она стоит левее? За счет пробела перед 9? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2003, 16:27 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
Возможно использовать пробел вместо 0 или 0 вместо пробела - одно и тоже. :)) 2 фыыфу не подскажете, чем это решение лучше связанной таблицы pid|id|level с индексами (pid,id) и (id,pid) (пополняемой так-же триггерами)? М.б. - это и якши (зер гут, gut, хорошо), но для уникальной парочки pid,id, а она, к сожалению не уникальна. Для обеспечения уникальности пришлось бы стыковать еще, как минимум 2-3 поля. Потом заморочно вычислять имена предков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2003, 16:48 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
поясню: имелась в виду триггерно пополняемая таблица всех потомков данного предка (что то же самое - всех предков данного потомка). Позволяет работать с деревом не рекурсивно (обычными SQL конструкциями - //так же как в предложенном случае, используя Like//). Таблицу несложно реализовать в виде триггера на каждую запись (заимствуя записи для предка, при вставке, или синхронно переписывая наборы записей всех потомков при перемещении их предка одним вызовом простой SQL конструкции). Естественно перемещение прикорневой ветки вызовет большие накладные расходы (переписать почти всю таблицу предков и перестроить индексы.). Этим решение мне и не нравится. Но ваш случай не кажется лучшим ( в смысле накладных расходов на перемещение веток). НАсчет скорости метода - не очевидно. Записей будет меньше, но длина записи - больше (к тому же неустранимо для вашей модели ограничение на число уровней). По поводу замечаний Витала: 1. композиция вида pid|id уникальна ибо данный предок встречается у потомка единственный раз если нет закольцовок, т.е. если дерево нормальное (какой-то там тудыть его граф). (тем самым мы закрываем дорогу к замыканию колец пользователям на уровне логики бд) 2. для случая с кольцами в наследовании (не думаю, что интересно для реализации) но единичным наследованием (единственный непосредственный предок pid) уникальной будет композиция: pid|id|level -т.к. у одного потомка единственен предок определенного уровня 3. случай множественного наследования тоже можно просмотреть, но не думаю что найдется разумное применение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2003, 14:06 |
|
||
|
Аналог функции Format() в T-SQL?
|
|||
|---|---|---|---|
|
#18+
фыыф1. композиция вида pid|id уникальна Если у тебя так, то я за тебя искренне рад. :о)) А теперь представь ситуацию (вполне реальную), когда в наборе на одном и том же уровне входимости встречаются два (3,4,5... n) одинаковых элементов. Казалось бы, достаточно указать только количество этих элементов и "дело в шляпе", если бы не требовалось различать для данного набора, например, позицию элемента в наборе, порядковый номер при комплектации, тип вхождения и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2003, 17:53 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32339150&tid=1677867]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 337ms |

| 0 / 0 |
