Как в запросе сравнить строки с точностью до регистра? #399576


#0 by NULLL
Строка имеет длинну в один символ.
#1 by Живой Ископаемый
с чем сравнить?
#2 by PR
1. Смотря с чем сравнивать. 2. В запросе может быть проблематично, в СКД точно можно.
#3 by Serg_1960
Наверное с потоком мысли автора... в один бит :(
#4 by NULLL
В регистре накопления есть реквизит типа строка, длинной 1 - код операции. Коды операции - это маленькие и большие буквы. Как в 1С8 отобрать код операции например строку "п"
#5 by NULLL
Делаю именно в СКД. Подскажи пожалуйста.
#6 by PR
ГДЕ КакаяТоТамХрень = "п" ИЛИ КакаяТоТамХрень = "П"
#7 by NULLL
Я же написал сравнить строки. Две строки между собой.
#8 by IronDemon
Тяжелое наследство клюшек?
#9 by Живой Ископаемый
по-прежнему не понятно где сравниваем - это условие, соединение, что-то еще?
#10 by PR
В СКД можно делать свои поля, которые будут вычисляться функцией общего модуля. И можно сделать функцию, которая вернет строку в верхнем регистре. Ну и сравнивать ее соответственно со строкой, переведенной в верхний регистр. Пример есть на ИТС.
#11 by NULLL
ГДЕ КакаяТоТамХрень = "п" Это условие выбирает строки регистра где вид операции равняется и "п" и "П", а мне нужно просто "п"
#12 by Живой Ископаемый
ПОДОБНО "п"
#13 by hhhh
сделай разные буквы
#14 by NULLL
Тоже пробовал.
#15 by PR
Ты сам понимаешь, что хочешь? Выбрать все, где вид операции равняется "п" можно с помощью ГДЕ КакаяТоТамХрень = "п". В чем проблема-то?
#16 by Serg_1960
Спс за уточнение. А то вопрос смутный - как фраза "копать от сюда и до обеда" :)
#17 by Serg_1960
Напомните мне, плиз: а в запросе "н" и "Н" различны?
#18 by NULLL
Да. Вот запрос: ВЫБРАТЬ    ВложенныйЗапрос.Поле1 ИЗ Вот результат:   п   П
#19 by acsent
Судю по запросу НЕ различны
#20 by 73
Попробуй: ВЫБРАТЬ    ВложенныйЗапрос.Поле1 ИЗ
#21 by NULLL
Тоже самое.
#22 by 73
А у меня работает. Удивлен.
#23 by НЕА123
хм... не различает. количество(различные(....тоже = 1 видимо ВРЕГ делает при сравнении.
#24 by NULLL
Цирк. Какая версия платформы?
#25 by НЕА123
1.04.09
#26 by 73
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВложенныйЗапрос.Поле1) КАК Поле1 ...
#27 by Serg_1960
Я тормоз? Запутался с Вами :( Давай с первого по последний - расчитайся :)
#28 by НЕА123
в имелось ввиду, кол-во различные без "ГДЕ" тоже =1.
#29 by 73
Понял. А у Вас работает правильно?
#30 by НЕА123
дает одинаковые.
#31 by NULLL
Запрос: ВЫБРАТЬ    ВложенныйЗапрос.Поле1 ИЗ Результат:  В
#32 by НЕА123
то, что в дает обе записи.
#33 by DmitrO
У 1с испокон веков в базе была регистронезависимая кодировка! Т.е. сервер баз данных не делает различий между символами в разном регистре при любых операциях.
#34 by DmitrO
собственно автор темы и пытается это преодолеть. Ответ в запросе на сервере это невозможно.
#35 by Serg_1960
Я так и знал :( Ходют тут всякие, кайф ломают :(
#36 by DmitrO
а так, то вопрос для 1С на 5 баллов
#37 by 73
Не факт. У меня же работает. Скорее всего виноват SQL.   ВложенныйЗапрос.Поле1 Не Подобно "[п]" дает П В
#38 by DmitrO
на чистом sql это решается приведением типов перед сравнением
#39 by NULLL
Я на скульной базе тоже проверял.Только версия платформы 8.1.11
#40 by DmitrO
это факт, просто спецификация опрерации ПОДОБНО имеет исключение
#41 by NULLL
И как можно заюзать эти исключения?
#42 by 73
Странно, у меня имеет исключение, а у автора не имеет. Вероятно все же разница в установленных SQL. Имею PostgreSQL.
#43 by 73
+ Причем если без [] , то у меня не работает тоже. А со скобками работает.
#44 by DmitrO
читайте документацию по оператору ПОДОБНО в квадратных скобках регистр имеет значение
#45 by DmitrO
хотя сори, там явно это не сказано..
#46 by 73
Ну, спорить не буду. И все же автор утверждает, что у него и со [] не работает.
#47 by DmitrO
ну вообще-то, на чистом sql, действительно сервер ведет себя соответственно установленной кодировке, т.е. различий не делает что в скобках что без скобок
#48 by NULLL
Вы что в профайлере смотрите?
#49 by hhhh
у 1С нет своего сравнения и подобно. Она всё доверяет SQL.
#50 by NULLL
Так вот кто виноват. А если база файловая?
#51 by DmitrO
нет, я просто проверил на чистом sql
#52 by DmitrO
я проверял MSSQL
#53 by DmitrO
вероятно у postgresql проблемы точнее проблемы всетаки у 1С, т.к. регистронезависимая кодировка это какраз то что они дописывали в postgresql
#54 by DmitrO
в документации по оператору ПОДОБНО в языке запросов 1С не совсем удачный пример, поэтому я дуиал что она имеет исключения по регистру символов, на самом деле ни каких исключений тут нет
#55 by NULLL
СКЛ не правельно выполнил запрос. Результат тот же что и в 1С: SELECT #V8TblAli1_Q_000_T_001._Q_001_F_000 AS f_1 FROM ( SELECT WHERE NOT #V8TblAli1_Q_000_T_001._Q_001_F_000 LIKE N'[п]'
#56 by DmitrO
а какой результат?
#57 by hhhh
мы тебе об этом и говорим.
#58 by NULLL
Результат:    В Спасибо, а что делать не скажите?
#59 by DmitrO
+ почему не правильно, это и есть правильный результат
#60 by 73
Не использовать строки в качестве кодов операций:)
#61 by DmitrO
такому шаблону [п] действительно НЕ соответствует только одна запись, т.к. регистр букв не учитывается первые две строни именно СООТВЕТСТВУЮТ шаблону
#62 by NULLL
Может и правельно. Но в СКЛ должен быть способ сравнения строк с учетом регистра. Ситуация такова. Есть семерошная конфигурация, по которой нужно отчеты. Мне создавать эти отчеты в  1С7 надоело, вот я решил конвертировать ее в 1С8, открыть консоль отчетов и получить отчеты. Но не тут-то было.
#63 by DmitrO
в sql есть способ, язык запросов 1С это не совсем sql
#64 by 73
А при конвертации - поменять коды нельзя?
#65 by NULLL
Для этого обсуждения, наверное нужно создавать отдельную ветку.
#66 by Serg_1960
Какой невинный вопрос "Напомните мне, плиз: а в запросе "н" и "Н" различны?" :) А какая бурная дискуссия :))
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С