![]() |
![]() |
![]() |
|
Как в запросе сравнить строки с точностью до регистра? | ☑ | ||
---|---|---|---|---|
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
|
Какой невинный вопрос "Напомните мне, плиз: а в запросе "н" и "Н" различны?" :) А какая бурная дискуссия :))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |