Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
У меня вопрос! Есть курсор Y с полем ХХХ(тип char) и таблица Z c полем AAA(тип varchar) мне надо сравнить эти 2 поля, но данные поля ХХХ это всегда одно значение(если убрать все пробелы), а вот данные поля ААА это допустим значения 1 2 23 44 и т д которые разделяют фиксированное число пробелов! Как мне сделать сравнение?? Большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 17:14 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Или я не совсем понял, или надо убрать пробелы из "ААА"? Тогда - STRTRAN... Sorry, но все-таки не совсем понял суть вопроса :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 17:38 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Пробелы надо убрать только слева! это понятно как!!! Вопрос в другом! Как сравнить значение в поле ХХХ допустим 1 с значениями в поле ААА 1 2 23 44 поле типа varchar ! Значения в поле ААА разделяют фиксированное число пробелов и их убирать не надо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 17:52 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
А если посмотреть на сочетание GetWordCount & GetWordNum? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 18:40 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Не понял, что ты хочешь получить в результате? Какие правила сравнения? Что должно вернуть, например, такие сравнение: "1" = "22 21 33" "1" = "22 1 33" "1" = "12 33" "1" = "1 22" Какие из них вернут .T., а какие .F. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 20:46 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Alex сегодня уже ушел... Рискну предположить :-) .F. "1" = "22 21 33" .T. "1" = "22 1 33" .F. "1" = "12 33" .T. "1" = "1 22" Т.е. нужно точное сравнение одного слова ALLTRIM(y.xxx) со слова ми , содержащимися в z.aaa. Угадал? ;-) Ну, а то, что оно там varchar ... Ну и на здоровье! Плюс ко всему, конечно, EXACT и т.п. Вот я и предлагаю GetWordCount & GetWordNum... Конечно, цикл - не есть хорошо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 23:00 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Ага, с дуру можно и Х сломать, особенно когда сама структурура данных один большой мусор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2004, 23:13 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
А если... Код: plaintext ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 00:04 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Насколько поняла - поле с пробелами - поле фокс таблицы - поле varchar - поле SQL сервера. В самом простом случае RTRIM(X.AAA)==Z.AAA или RTRIM(X.AAA)==RTRIM(Z.AAA) Ну или см. SET VARCHARMAPPING ON|OFF в VFP9 Если вообще об этом речь, а то из вопроса не совсем понятно чего человеку надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 09:00 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Если действительно требуется определить факт вхождения в строку, то можно так: Код: plaintext Т.е. я окружаю искомый символ пробелами и ищу не сам символ, а символ окруженный пробелами, предварительно добавив ведущий и концевой пробел в строке для поиска. Впрочем, надо уточнить у автора, что же он в дейстивтельности хочет получить и в каком синтаксисе: FoxPro или MS SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 09:27 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Владимир , уже если окружать чем-то, то по-моему лучше было использовать что-то вроде CHR(1), так уж точно определите что надо, ибо и в VarChar могут быть значимые пробелы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 09:31 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Нет, CHR(1) не подходит. Я ведь использую не первый попавшийся символ, а символ-разделитель внутри строки Z.AAA По условию задачи слова в этой строке окружены именно пробелами. Начальный и концевой пробел я вынужден добавить для того, чтобы окружить еще и первое и последнее слово. Впрочем, если слова внутри строки Z.AAA разделены символом CHR(1), то именно его и надо будет добавлять в сравниваемые строки вместо ведущего и концевого пробела. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 09:42 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Ну что ж, возможно Вы и правы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 09:47 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
автор "1" = "22 21 33" "1" = "22 1 33" "1" = "12 33" "1" = "1 22" Какие из них вернут .T., а какие .F. Да именно это мне и надо!! И ещё... значение в поле ХХХ может быть не одно!!! Их может быть несколько так же как и в поле AAA! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 10:36 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Alex Is автор "1" = "22 21 33" "1" = "22 1 33" "1" = "12 33" "1" = "1 22" Какие из них вернут .T., а какие .F. Да именно это мне и надо!! И ещё... значение в поле ХХХ может быть не одно!!! Их может быть несколько так же как и в поле AAA! Алекс, так что же именно Вам надо? Я задал вопрос в надежде, что Вы на него ответите. А содержимое вопроса я и так знаю, ведь сам его и задавал Приведите примеры значений полей XXX и AAA и какие из них должны дать .T., а какие .F. Кроме того, в каком синтаксисе надо писать сравнение: MS SQL или FoxPro? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 10:41 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Прошу прощения ещё не проснулся! :) Синтаксис Fox Pro! Значение поля ХХХ может быть только цифра, т. е. только одно значение! Значения поля AAA это несколько значений(может быть очень много поле varchar 8000)! Все значения в поле ААА разделены фиксированным количеством пробелов(5 при условии что это значения (допустим)1 2, если же значения 1 23 то пробелов становится четыре). Мне надо сравнить ХХХ с ААА и возвращать совпавшие значения! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 11:01 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Используй AT() !!! ?Iif(At(Padl(AllTrim(AAA),5," "),ZZZ)#0,.t.,.f.) Я исходил из того, что длина слова у тебя фиксированная = 5 символов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 13:01 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
данные поля ХХХ это всегда одно значение И ещё... значение в поле ХХХ может быть не одно!!! Еще вопросы есть??? Без циклов и GetWordCount & GetWordNum не обойдешься ;-) P.S. Гость_ххх прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 20:08 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Прошу прощения ещё не проснулся! :) Синтаксис Fox Pro! Значение поля ХХХ может быть только цифра, т. е. только одно значение! Sorry, Alex! Недочитал... Но все равно - без цикла по ААА не обойдешься! :-) 5 при условии что это значения (допустим) 1 2, если же значения 1 23 то пробелов становится четыре А вот этой закономерности не понял :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 22:13 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
А че тут понимать - во втором случае следующе число (23) двузначное, поэтому его первый разряд занимает один из 5 фиксированных пробелов, таким образом, их остается всего четыре; а если бы это число было 3-значное (например, 323, то пробелов оставалось бы всего 3, и т.д.), т.е - начальная позиция очередной порции разделительных пробелов отсчитывается от последней цифры предыдущего числа. Я прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2004, 22:34 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Если длина "слова" - это фиксированное количество символов (в данном случае - 6) причем недостающее дополняется пробелами слева , то можно так: Код: plaintext Если я правильно понял, то именно слева, а не справа. Например, если у тебя исходная строка Z.AAA имеет значение: "1"+SPACE(4)+"23" то в данной формуле она преобразуется в вид SPACE(6)+"1"+SPACE(4)+"23" Теперь, если в поле Y.XXX записано значение SPACE(k)+"2"+SPACE(n) то в данной формуле оно преобразуется в значение SPACE(5)+"2" В результате, ищем вхождение строки SPACE(5)+"2" в строку SPACE(6)+"1"+SPACE(4)+"23" и разумеется ничего не находим. Правда, если между словами в Z.AAA не будет вообще ни одного пробела, то такая функция не сработает. Точнее, она не гарантирует точного нахождения слов, поскольку может найти сочетание из 2 рядом стоящих слов слившихся в одно из-за отсутствия пробелов между ними. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2004, 09:01 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Опечатка. Должно быть так: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2004, 09:05 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Все значения в поле ААА разделены фиксированным количеством пробелов Вроде бы между значениями должно стоять фиксированное кол-во пробелов. Я понял так... to neznajka - не слишком ли умно для такой, мягко говоря, странной :-) структуры данных? to ВладимирМ - Вам не начинает казаться, что мы тут зря тратим время? to ALL - Ну, может я слегка слепой ;-( А где шла речь о фиксированной длине слова в ААА??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2004, 10:17 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
Redrik to ВладимирМ - Вам не начинает казаться, что мы тут зря тратим время? Обычная ситуация, типичная для большинства новичков: -) человек не может внятно сформулировать задачу, приходится "додумывать", что же именно он имел в виду -) не может удержать в памяти все ответы на свой вопрос, поэтому отвечает только на один...два, самые запомнившиеся. Причем отвечает так, что опять-таки непонятно, о чем это он -) мы тут стараемся, пишем, а спрашивающий уже ушел. Проблема была решена так или иначе или вообще отложена, но сказать об этом забыли. Приходится писать максимально подробно и с кучей вариантов в надежде, что либо один из вариантов окажется решением именно того о чем спрашивали, или человек наконец-то поймет, что же именно он хотел спросить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2004, 10:29 |
|
||
|
Сравнение по включению!
|
|||
|---|---|---|---|
|
#18+
To Redrik: Согласен, с "умностью" может и перебор, в данном случае. Но (по своей работе знаю) зачастую бывает так, что мы не в состоянии повлиять на структуру поступающих в наше распоряжение данных, приходится извращаться над тем, что есть... Это, скорее всего, не вина Алекса, а его беда, даже если он действительно новичек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2004, 10:46 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32692766&tid=1595780]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 398ms |

| 0 / 0 |
