powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Аналог функции Format() в T-SQL?
19 сообщений из 19, страница 1 из 1
Аналог функции Format() в T-SQL?
    #32337990
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой? необходимо представлять числовые данные (int) в виде стринга например так: '000012'
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32337996
pavelch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите функции преобразования форматов данных CAST и CONVERT
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32338008
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел пока такой вариант:
Код: plaintext
select replace(str( 15 , 6 , 0 ),' ','0')


2pavelch
Спасибо! :о)
Но мне не надо преобразования типов, мне как раз надо и хранить в виде '000012', а не получить вместо int 12 - char 12.
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32338231
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты не перемудрил?
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32339122
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel писал:А ты не перемудрил?

Если можно это сделать одной функцией, то перемудрил.
Если спрашиваешь: "На фига...". А нада! Хочу составной ключ для дерева...
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32339150
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так не пробовал? Это не ключ, это служеьное поле, но идея, думаю, понятна.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
   0 
   0 .   1 
   0 .   1 .  25 
   0 .   1 .  25 .  73 
   0 .   1 .  25 .  73 . 119 
   0 .   1 .  25 .  73 . 120 
   0 .   1 .  25 .  74 
   0 .   1 .  25 .  75 
   0 .   1 .  25 .  75 . 121 
   0 .   1 .  25 .  75 . 122 
   0 .   1 .  25 .  76 
   0 .   1 .  25 .  77 
   0 .   1 .  25 .  78 
   0 .   1 .  25 .  79 
   0 .   1 .  26 
   0 .   1 .  26 .  80 
   0 .   1 .  26 .  81 
   0 .   1 .  26 .  81 . 123 
   0 .   1 .  26 .  81 . 124 
   0 .   1 .  26 .  82 
   0 .   1 .  26 .  82 . 125 
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32339224
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это несколько полей (для каждого уровня 1 поле), то думал об этом - кажется заморочно.

если это одно поле и формируется путем сцепления ключей (ID), то это как раз попробовал в первую очередь, но - проблемы с сортировкой. Для текста 1, 11, 12...2, 21,22... Во-первых. Во-вторых сложности с вычислением ID произвольного уровня...
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32339252
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это одно поле. Проблема с сортировкой отсутствует, а ты, значит, идею не понял. Вычисление ID произвольного уровня это совершенно другая задача, и этим полем и не должна решаться.
P.S
Я так с деревьями не работаю, это компромисный вариант когда пришлось навешивать доработки к чужой системе.
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32339255
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй так: select right('000000' + cast(12 as varchar(6)), 6)
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32339285
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Pavel

Значит и в самом деле твою идею не понял. :о<(( Если можешь расскажи подробнее, что это за цифирки там у тебя - откуда они взялись. Это не сцепка ParentID&ID?

IgorM писал:Попробуй так: select right('000000' + cast(12 as varchar(6)), 6)

Хорошая идея. Спасибо! Но тоже 2 функции используются. Вопрос только, что быстрее? Мой или твой вариант? Подозреваю, что различия будут нерзличимы.
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32339292
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel писал:Вычисление ID произвольного уровня это совершенно другая задача, и этим полем и не должна решаться

Почемуууу??? Т.е. почему не совместить приятное с полезным?
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32339415
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обьясняю идею. Это поле формируется на основании поля, определяющего порядок сортировки. Множество этих значений равно множеству значений ключей. При вставке новой записи автоматом полю сортировки присваивается значение ключа. В процессе работы можно менять (попарно) значения в поле сортировки. В правой части - значение поля именно этой записи, левее - ее предка, еще левее - предка предка, и так до вершины.
Обрати внимание, что в приведенном мной примере числа распологаются группами одно под другим. Наверное не очень удачный пример, покажу другой фрагмент:
Код: plaintext
1.
2.
 0 .   9 
 0 .  10 

Обрати внимание, в цифре 10 единица стоит на позицию левее. так что сортировка по этому полю отражает реальное (или желаемое) расположение элементов вдереве.
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32339449
фыыф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Pavel
разделитель (.) в вашей модели лишний. Улучшает только читаемость. съедает размер поля.

не подскажете, чем это решение лучше связанной таблицы pid|id|level с индексами (pid,id) и (id,pid) (пополняемой так-же триггерами)?
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32339543
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фыыф
разделитель (.) в вашей модели лишний. Улучшает только читаемость. съедает размер поля.

Абсолютно точно. После отладки оставил для улучшения читаемости глазками. Практического смысла никакого.

не подскажете, чем это решение лучше связанной таблицы pid|id|level с индексами (pid,id) и (id,pid) (пополняемой так-же триггерами)?

Это самое корявое, но самое быстрое (всмысле скорости работы) решение.
К тому же, как я уже писал, в той ситуации другое решение применить было проблематично.
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32339546
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, чтобы никого не ввести в заблуждение, естественно в таблице присутствует id, pid.
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32339685
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обрати внимание, в цифре 10 единица стоит на позицию левее.

А за счет чего она стоит левее? За счет пробела перед 9?
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32339725
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно использовать пробел вместо 0 или 0 вместо пробела - одно и тоже. :))

2 фыыфу
не подскажете, чем это решение лучше связанной таблицы pid|id|level с индексами (pid,id) и (id,pid) (пополняемой так-же триггерами)?

М.б. - это и якши (зер гут, gut, хорошо), но для уникальной парочки pid,id, а она, к сожалению не уникальна. Для обеспечения уникальности пришлось бы стыковать еще, как минимум 2-3 поля. Потом заморочно вычислять имена предков.
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32340752
фыыф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поясню: имелась в виду триггерно пополняемая таблица всех потомков данного предка (что то же самое - всех предков данного потомка). Позволяет работать с деревом не рекурсивно (обычными SQL конструкциями - //так же как в предложенном случае, используя Like//). Таблицу несложно реализовать в виде триггера на каждую запись (заимствуя записи для предка, при вставке, или синхронно переписывая наборы записей всех потомков при перемещении их предка одним вызовом простой SQL конструкции). Естественно перемещение прикорневой ветки вызовет большие накладные расходы (переписать почти всю таблицу предков и перестроить индексы.). Этим решение мне и не нравится. Но ваш случай не кажется лучшим ( в смысле накладных расходов на перемещение веток). НАсчет скорости метода - не очевидно. Записей будет меньше, но длина записи - больше (к тому же неустранимо для вашей модели ограничение на число уровней).


По поводу замечаний Витала:

1. композиция вида pid|id уникальна
ибо данный предок встречается у потомка единственный раз если нет закольцовок, т.е. если дерево нормальное (какой-то там тудыть его граф). (тем самым мы закрываем дорогу к замыканию колец пользователям на уровне логики бд)

2. для случая с кольцами в наследовании (не думаю, что интересно для реализации) но единичным наследованием (единственный непосредственный предок pid) уникальной будет композиция:
pid|id|level -т.к. у одного потомка единственен предок определенного уровня

3. случай множественного наследования тоже можно просмотреть, но не думаю что найдется разумное применение.
...
Рейтинг: 0 / 0
Аналог функции Format() в T-SQL?
    #32342431
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фыыф1. композиция вида pid|id уникальна

Если у тебя так, то я за тебя искренне рад. :о))

А теперь представь ситуацию (вполне реальную), когда в наборе на одном и том же уровне входимости встречаются два (3,4,5... n) одинаковых элементов. Казалось бы, достаточно указать только количество этих элементов и "дело в шляпе", если бы не требовалось различать для данного набора, например, позицию элемента в наборе, порядковый номер при комплектации, тип вхождения и т.д.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Аналог функции Format() в T-SQL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]