powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Все вхождения одной строки в другую (запрос)
7 сообщений из 7, страница 1 из 1
Все вхождения одной строки в другую (запрос)
    #32473722
Bastard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте !
Есть две таблицы: Skmtr и Nom, в них есть поле inom1 - текстовое (char(50))
Мне нужно написать запрос, который бы выбирал все поля из Skmtr, где есть вхождения поля Nom.inom1
Т.е. это делается с оператором SQL - LIke с ключиком %, но вот куда его вставить этот ключик, как правильно написать запрос не знаю ((((
Подскажите очено пожалуйста !
...
Рейтинг: 0 / 0
Все вхождения одной строки в другую (запрос)
    #32473781
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например, так:

where Skmtr.inom1 like '%'+Nom.inom1+'%'

но можно и проще:

where Nom.inom1 $ Skmtr.inom1
...
Рейтинг: 0 / 0
Все вхождения одной строки в другую (запрос)
    #32473907
Только уж очень медленно работать будет...
...
Рейтинг: 0 / 0
Все вхождения одной строки в другую (запрос)
    #32473987
Bastard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT Skmtr.*;
FROM skmtr, wrong_all_numbers;
WHERE Skmtr.inom1 LIKE '%'+wrong_all_numbers.inom1+'%'

НЕ РАБОТАЕТ (((((

Может где ошибка закралась ???
...
Рейтинг: 0 / 0
Все вхождения одной строки в другую (запрос)
    #32474072
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А inom1 у тебя часом не число?
Like сравнивает строку со строкой, и не иначе!

Вот к примеру:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create cursor a1 (inom c( 1 ))
create cursor a2 (inom c( 2 ))

SELECT a1
append blank
replace inom with '1'
append blank
replace inom with '2'

SELECT a2
append blank
replace inom with '01'
append blank
replace inom with '20'
append blank
replace inom with '03'
append blank
replace inom with '30'

SELECT a2.*; 
FROM a2, a1 ; 
WHERE a2.inom LIKE '%'+a1.inom+'%'

Возвращает, как и хотели, строки с inom = '10' и inom = '02'.
...
Рейтинг: 0 / 0
Все вхождения одной строки в другую (запрос)
    #32474077
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. '01' и '20', конечно ;-)
...
Рейтинг: 0 / 0
Все вхождения одной строки в другую (запрос)
    #32474106
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, а еще, может быть, "не работает" - в смысле - возвращает больше записей, чем, якобы, должно?

Это если в моем примере сделать дополнительно:

Код: plaintext
1.
2.
3.
select a2
append blank
replace inom with '21'

и еще раз выполнить запрос -
так результат будет такой:

'01'
'21'
'20'
'21'

Т.е. '21' выберется 2 раза вместо одного?
Ну так ничего удивительного - в '21' входит и '1', и '2' - а условие связи отрабатывает совершенно правильно.
Добавь после select в свой запрос еще distinct - и заработает.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Все вхождения одной строки в другую (запрос)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]