Имя: Пароль:
1C
 
СтрЗаменить() в запросе.
0 Molinor
 
06.04.11
13:51
Подскажите, пожалуйста, если ли что-то подобное СтрЗаменить(), но только в запросе.
Имеем строку: "123-вап-34-па-4".
Хотим убрать "-", чтобы получилось "123вап34па4".
Это реально сделать? Если реально, то как?
1 SalavatUlaev
 
06.04.11
13:52
нет
2 Grusswelle
 
06.04.11
13:53
Реально. См. функцию "Подстрока( )" языка запросов, например.
3 Grusswelle
 
06.04.11
13:54
...если ты, конечно, знаешь точно позиции, на которых у тебя дефисы стоят...
4 Fragster
 
гуру
06.04.11
13:54
(2) бугага
5 Wobland
 
06.04.11
13:54
(0) есть же ПОДСТРОКА(). если у тебя строка всегда минусы на тех же местах, то взлетит
6 Molinor
 
06.04.11
13:55
(2), (5) Заранее неизвестно где будут "-", сколько их будет...
7 Grusswelle
 
06.04.11
13:56
(4) Чего это вы поржать изволили, сударь?
8 Grusswelle
 
06.04.11
13:56
(6) Тогда - нереально.
9 SalavatUlaev
 
06.04.11
13:57
(7) И я бы поржал, Подстрокой() заменить СтрЗаменить()
10 Molinor
 
06.04.11
13:57
(8) Печально.
Ладно, спасибо.
11 PR
 
06.04.11
13:59
1. Сложение выборов по максимальному числу символов.
2. СКД.
3. Забить и делать это не в запросе (рекомендуется).
12 hhhh
 
06.04.11
14:02
(8) чего это нереально? Вполне реально.

ВЫБОР КОГДА ПОДСТРОКА(Поле, 1, 1) = ""-"" ТОГДА
 ПОДСТРОКА(Поле, 1, 1)
ИНАЧЕ """"
КОНЕЦ
+
ВЫБОР КОГДА ПОДСТРОКА(Поле, 2, 1) = ""-"" ТОГДА
 ПОДСТРОКА(Поле, 2, 1)
ИНАЧЕ """"
КОНЕЦ
+
...
+
ВЫБОР КОГДА ПОДСТРОКА(Поле, 100, 1) = ""-"" ТОГДА
 ПОДСТРОКА(Поле, 100, 1)
ИНАЧЕ """"
КОНЕЦ
13 hhhh
 
06.04.11
14:02
(12)+ блин, наоборот "="  -->  "<>"
14 SalavatUlaev
 
06.04.11
14:03
(12) Ты ржашь чтоли ?
15 SalavatUlaev
 
06.04.11
14:04
(12) Почему именно 100 ?
16 Molinor
 
06.04.11
14:04
(13), ага, понятно, спасибо. :)
Подошёл с другой стороны, получилось менее универсально, но зато раз так в 100 короче. :)
17 SalavatUlaev
 
06.04.11
14:06
(16) Давай решение, интересно
18 Wobland
 
06.04.11
14:07
(15) если строка фиксированной длины 100, тогда 100 ;)
19 Wobland
 
06.04.11
14:07
(17) а что там интересного, обработка результата запроса
20 Molinor
 
06.04.11
14:10
(16) Проставляю "-" параметру, который передаю в запрос.
Универсальность страдает в том случае, если строку ввели не полностью, тогда "-" могут поставиться не там где надо, и не получим нужного результата.
Ежели строку ввели полностью, тогда мы точно знаем где ставить "-".
21 Elf_80_lvl
 
06.04.11
14:12
(20) А почему нельзя после того как подставили парамест в запрос сделать Запрос.Текст = СтрЗаменить(Запрос.Текст,"","") ?
22 Elf_80_lvl
 
06.04.11
14:16
(20) Прошу прощения, с параметром не получится как в (21). А сам параметр перед передачей нельзя обработать?
23 Molinor
 
06.04.11
14:17
(20)
ВЫБРАТЬ
  Откуда-то.СтрокаСМинусом
ИЗ
  Откуда-то
ГДЕ
  Откуда-то.СтрокаСМинусом ПОДОБНО &СтрокаБезМинуса

Хочу, чтобы по параметру "СтрокаБезМинуса" равному "п34" он находил Откуда-то.СтрокаСМинусом равную "1-2-п-3-4".
24 Дантес
 
06.04.11
14:17
(21) да действительно, почему нельзя? ))))) Прикольно получится :)
25 PR
 
06.04.11
14:19
(23) А что, "%п%3%4%" не катит?
Ну или что там вместо % для любого количества любых символов, если ошибся :))
26 Fragster
 
гуру
06.04.11
14:20
(25) знаешь, как долго это будет работать? тогда уж "?"
27 PR
 
06.04.11
14:21
(26) И (23) сработает? :))
28 Fragster
 
гуру
06.04.11
14:22
а, фигню написал...

Подобно
Данная операция проверяет соответствие строки переданному шаблону.

Значением оператора ПОДОБНО является ИСТИНА, если значение <Выражения> удовлетворяет шаблону, и ЛОЖЬ в противном случае.

Следующие символы в <Строке_шаблона> имеют смысл, отличный от просто очередного символа строки:

% - процент: последовательность, содержащая ноль и более произвольных символов;
_ - подчеркивание: один произвольный символ;
[…] - один или несколько символов в квадратных скобках: один символ, любой из перечисленных внутри квадратных скобок. В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона;
[^…] - в квадратных скобках значок отрицания, за которым следует один или несколько символов: любой символ, кроме тех, которые перечислены следом за значком отрицания;
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки. Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>, указанный после ключевого слова СПЕЦСИМВОЛ (ESCAPE).

Например, шаблон

“%АБВ[0-9][абвг]\_абв%” СПЕЦСИМВОЛ “\”

означает подстроку, состоящую из последовательности символов: буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем эта последовательность может располагаться, начиная с произвольной позиции в строке.
29 Fragster
 
гуру
06.04.11
14:23
хотя непонятно, почему они квантификаторы не прикрутили
30 Andry888
 
06.04.11
14:24
(23)
что типа того...

ВЫБРАТЬ
  Откуда-то.СтрокаСМинусом
ИЗ
  Откуда-то
ГДЕ
  Откуда-то.СтрокаСМинусом ПОДОБНО "%п[-]3[-]4%"

+ ну а "%п[-]3[-]4%" параметризовать есесено...
31 Molinor
 
06.04.11
14:27
(28) Да конечно, сп украли, негде было прочитать. :(
Проблема решается с %, работает не сильно долго, даже если между всеми символами впихивать.
Спасибо. Буду искать грабителя!