Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
хранимая процедура
|
|||
|---|---|---|---|
|
#18+
Всем привет. У меня в процедуре есть входной параметр @a int. Нужно получить переменную @s char(6) по следующему условию: если, например @a=12, то @s=000012 и т.д. Как это реализовать на сервере? Заранее благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2002, 12:22 |
|
||
|
хранимая процедура
|
|||
|---|---|---|---|
|
#18+
Хотел быстренько ответить: set @s=right('000000'+ltrim(cast(@a as char(6))),6) потом решил попробовать ! select right('0004321',2) select right('0004321',5) select right('0004321',9) ОК ! Далее select '000000'+cast(12 as char(6)) select right('000000'+cast(12 as char(6)),6) select right('000000'+cast(12 as char(6)),7) select right('000000'+cast(12 as char(6)), select right('000000'+cast(12 as char(6)),9) и глаза на лоб! Что же это за второй параметр !? а соответственно чудеса в declare @a int,@s char(6) set @a=12 select '000000'+cast(@a as char(6)) select right('000000'+cast(@a as char(6)),6) select right('000000'+cast(@a as char(6)),7) Так что не ответил ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2002, 13:16 |
|
||
|
хранимая процедура
|
|||
|---|---|---|---|
|
#18+
set @s = right('000000'+cast(@a as varchar), 6 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2002, 13:27 |
|
||
|
хранимая процедура
|
|||
|---|---|---|---|
|
#18+
2Glory Замечательно ! Все строчки отрабатывают правильно! Не могли бы Вы поделиться, в чем же все-таки дело, ведь с точки зрения других языков все должно работать идентично. А кстати, может еще где-то такие подарочки укрыты ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2002, 12:08 |
|
||
|
хранимая процедура
|
|||
|---|---|---|---|
|
#18+
Ничего хитрого здесь нет Дело в том, что при преобразованиие в char(6) происходит дополнение строки до заданной длины пробелами, причем пробелы добавляются справа. Т.е. cast(12 as char(6)) дает результат '12 ' (4 пробела). Понятно что right(@a, 6) берет первые 6 символов справа, включая пробелы. А cast(12 as varchar) дает строку без дополнительных пробелов Но для этого собственно и были "придуманы" такие типы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2002, 12:23 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1823076]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
75ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 264ms |
| total: | 424ms |

| 0 / 0 |
