Имя: Пароль:
1C
 
Как в запросе сравнить строки с точностью до регистра?
0 NULLL
 
01.04.09
15:22
Строка имеет длинну в один символ.
1 Живой Ископаемый
 
01.04.09
15:24
с чем сравнить?
2 PR
 
01.04.09
15:29
(0) 1. Смотря с чем сравнивать.
2. В запросе может быть проблематично, в СКД точно можно.
3 Serg_1960
 
01.04.09
15:29
(1) Наверное с потоком мысли автора... в один бит :(
4 NULLL
 
01.04.09
15:29
В регистре накопления есть реквизит типа строка, длинной 1 - код операции.
Коды операции - это маленькие и большие буквы. Как в 1С8 отобрать код операции например строку "п"
5 NULLL
 
01.04.09
15:30
(2) Делаю именно в СКД. Подскажи пожалуйста.
6 PR
 
01.04.09
15:30
(4) ГДЕ КакаяТоТамХрень = "п" ИЛИ КакаяТоТамХрень = "П"
7 NULLL
 
01.04.09
15:30
(3) Я же написал сравнить строки. Две строки между собой.
8 IronDemon
 
01.04.09
15:31
(4) Тяжелое наследство клюшек?
9 Живой Ископаемый
 
01.04.09
15:31
Строка1.КакаяТоХернь = Строка2.КакаяТоХрень

по-прежнему не понятно где сравниваем - это условие, соединение, что-то еще?
10 PR
 
01.04.09
15:32
(5) В СКД можно делать свои поля, которые будут вычисляться функцией общего модуля.
И можно сделать функцию, которая вернет строку в верхнем регистре.
Ну и сравнивать ее соответственно со строкой, переведенной в верхний регистр.
Пример есть на ИТС.
11 NULLL
 
01.04.09
15:32
(6)
ГДЕ КакаяТоТамХрень = "п"

Это условие выбирает строки регистра где вид операции равняется и "п" и "П", а мне нужно просто "п"
12 Живой Ископаемый
 
01.04.09
15:33
ПОДОБНО "п"
13 hhhh
 
01.04.09
15:33
(4) сделай разные буквы
14 NULLL
 
01.04.09
15:33
(12) Тоже пробовал.
15 PR
 
01.04.09
15:33
(11) Ты сам понимаешь, что хочешь?
Выбрать все, где вид операции равняется "п" можно с помощью ГДЕ КакаяТоТамХрень = "п".
В чем проблема-то?
16 Serg_1960
 
01.04.09
15:34
(7) Спс за уточнение. А то вопрос смутный - как фраза "копать от сюда и до обеда" :)
17 Serg_1960
 
01.04.09
15:36
Напомните мне, плиз: а в запросе "н" и "Н" различны?
18 NULLL
 
01.04.09
15:37
(17) Да.
Вот запрос:
ВЫБРАТЬ
   ВложенныйЗапрос.Поле1
ИЗ
   (ВЫБРАТЬ
       "п" КАК Поле1
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       "П") КАК ВложенныйЗапрос
ГДЕ
   ВложенныйЗапрос.Поле1 = "п"

Вот результат:
  п
  П
19 acsent
 
01.04.09
15:43
(18) Судю по запросу НЕ различны
20 73
 
01.04.09
15:45
Попробуй:

ВЫБРАТЬ
   ВложенныйЗапрос.Поле1
ИЗ
   (ВЫБРАТЬ
       "п" КАК Поле1
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       "П") КАК ВложенныйЗапрос
ГДЕ
   ВложенныйЗапрос.Поле1 подобно "[п]"
21 NULLL
 
01.04.09
15:47
(20)Тоже самое.
22 73
 
01.04.09
15:48
(21) А у меня (20) работает. Удивлен.
23 НЕА123
 
01.04.09
15:50
хм...
(20) не различает.
количество(различные(....тоже = 1
видимо ВРЕГ делает при сравнении.
24 NULLL
 
01.04.09
15:53
(22) Цирк. Какая версия платформы?
25 НЕА123
 
01.04.09
15:54
(24) 1.04.09
26 73
 
01.04.09
15:55
(23) И
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВложенныйЗапрос.Поле1) КАК Поле1
...
ГДЕ
   ВложенныйЗапрос.Поле1 ПОДОБНО "[п]"
- дает 1.

1С:Предприятие 8.1 (8.1.13.41)
27 Serg_1960
 
01.04.09
15:57
Я тормоз? Запутался с Вами :( Давай с первого по последний - расчитайся :)

Запрос = Новый Запрос("ВЫБРАТЬ ВЫБОР КОГДА ""п"" <> ""П"" ТОГДА ""различные"" ИНАЧЕ ""одинаковые"" КОНЕЦ КАК Резюме");
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Сообщить(Выборка.Резюме);
28 НЕА123
 
01.04.09
15:59
(26)
в (23) имелось ввиду, кол-во различные без "ГДЕ" тоже =1.
29 73
 
01.04.09
16:00
(28) Понял.
А у Вас (20) работает правильно?
30 НЕА123
 
01.04.09
16:00
(27) дает одинаковые.
31 NULLL
 
01.04.09
16:00
(27)
Запрос:
ВЫБРАТЬ
   ВложенныйЗапрос.Поле1
ИЗ
   (ВЫБРАТЬ
       "п" КАК Поле1
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       "П"
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       "В") КАК ВложенныйЗапрос
ГДЕ
   ВложенныйЗапрос.Поле1 <> "п"

Результат:
 В
32 НЕА123
 
01.04.09
16:01
(29)
то, что в(20) дает обе записи.
33 DmitrO
 
01.04.09
16:02
У 1с испокон веков в базе была регистронезависимая кодировка!
Т.е. сервер баз данных не делает различий между символами в разном регистре при любых операциях.
34 DmitrO
 
01.04.09
16:03
собственно автор темы и пытается это преодолеть.
Ответ в запросе на сервере это невозможно.
35 Serg_1960
 
01.04.09
16:04
Я так и знал :( Ходют тут всякие, кайф ломают :(
36 DmitrO
 
01.04.09
16:04
а так, то вопрос для 1С на 5 баллов
37 73
 
01.04.09
16:04
(33) Не факт. У меня же работает. Скорее всего виноват SQL.
И (31) при
  ВложенныйЗапрос.Поле1 Не Подобно "[п]"
дает
П
В
38 DmitrO
 
01.04.09
16:05
на чистом sql это решается приведением типов перед сравнением
39 NULLL
 
01.04.09
16:06
(37) Я на скульной базе тоже проверял.Только версия платформы 8.1.11
40 DmitrO
 
01.04.09
16:10
(37) это факт, просто спецификация опрерации ПОДОБНО имеет исключение
41 NULLL
 
01.04.09
16:14
(40) И как можно заюзать эти исключения?
42 73
 
01.04.09
16:14
(40) Странно, у меня имеет исключение, а у автора не имеет.
Вероятно все же разница в установленных SQL.
Имею PostgreSQL.
43 73
 
01.04.09
16:15
(42)+ Причем если без [] , то у меня не работает тоже. А со скобками работает.
44 DmitrO
 
01.04.09
16:20
читайте документацию по оператору ПОДОБНО
в квадратных скобках регистр имеет значение
45 DmitrO
 
01.04.09
16:26
хотя сори, там явно это не сказано..
46 73
 
01.04.09
16:26
(44) Ну, спорить не буду.
И все же автор утверждает, что у него и со [] не работает.
47 DmitrO
 
01.04.09
16:29
ну вообще-то, на чистом sql, действительно сервер ведет себя соответственно установленной кодировке, т.е. различий не делает что в скобках что без скобок
48 NULLL
 
01.04.09
16:30
(47)Вы что в профайлере смотрите?
49 hhhh
 
01.04.09
16:30
(47) у 1С нет своего сравнения и подобно. Она всё доверяет SQL.
50 NULLL
 
01.04.09
16:32
(49) Так вот кто виноват. А если база файловая?
51 DmitrO
 
01.04.09
16:32
нет, я просто проверил на чистом sql
52 DmitrO
 
01.04.09
16:34
я проверял MSSQL
53 DmitrO
 
01.04.09
16:36
вероятно у postgresql проблемы
точнее проблемы всетаки у 1С, т.к. регистронезависимая кодировка это какраз то что они дописывали в postgresql
54 DmitrO
 
01.04.09
16:41
в документации по оператору ПОДОБНО в языке запросов 1С не совсем удачный пример, поэтому я дуиал что она имеет исключения по регистру символов, на самом деле ни каких исключений тут нет
55 NULLL
 
01.04.09
16:42
СКЛ не правельно выполнил запрос. Результат тот же что и в 1С:

SELECT
#V8TblAli1_Q_000_T_001._Q_001_F_000 AS f_1
FROM
(
SELECT
N'п' AS _Q_001_F_000
UNION ALL
SELECT
N'П' AS _Q_001_F_000
UNION ALL
SELECT
N'В' AS _Q_001_F_000
) #V8TblAli1_Q_000_T_001
WHERE
NOT #V8TblAli1_Q_000_T_001._Q_001_F_000 LIKE N'[п]'
56 DmitrO
 
01.04.09
16:43
(55) а какой результат?
57 hhhh
 
01.04.09
16:44
(55) мы тебе об этом и говорим.
58 NULLL
 
01.04.09
16:45
(56)
Результат:
   В
(57)Спасибо, а что делать не скажите?
59 DmitrO
 
01.04.09
16:47
(55)+(58) почему не правильно, это и есть правильный результат
60 73
 
01.04.09
16:47
(58) Не использовать строки в качестве кодов операций:)
61 DmitrO
 
01.04.09
16:49
такому шаблону [п] действительно НЕ соответствует только одна запись, т.к. регистр букв не учитывается первые две строни именно СООТВЕТСТВУЮТ шаблону
62 NULLL
 
01.04.09
16:51
(59)Может и правельно. Но в СКЛ должен быть способ сравнения строк с учетом регистра.
(60)
Ситуация такова. Есть семерошная конфигурация, по которой нужно отчеты.
Мне создавать эти отчеты в  1С7 надоело, вот я решил конвертировать ее в 1С8, открыть консоль отчетов и получить отчеты. Но не тут-то было.
63 DmitrO
 
01.04.09
16:52
в sql есть способ, язык запросов 1С это не совсем sql
64 73
 
01.04.09
16:58
(62) А при конвертации - поменять коды нельзя?
65 NULLL
 
01.04.09
17:02
(64) Для этого обсуждения, наверное нужно создавать отдельную ветку.
66 Serg_1960
 
01.04.09
18:01
Какой невинный вопрос "Напомните мне, плиз: а в запросе "н" и "Н" различны?" :) А какая бурная дискуссия :))