Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / [Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер / 14 сообщений из 14, страница 1 из 1
13.06.2013, 16:24
    #38296491
AVRob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер
В Delphi имеется DBF таблица.

имеется таблица с символьным полем NUM, где хранятся номера. номера могут содержать и буквы.

NUM
1. Р-25
2. 125-Н
3. 3257
4. П-25/12

Как с помощью SQL запроса найти строки имеющие в поле NUM число 25.

Результат должен быть
NUM
1. Р-25
4. П-25/12
...
Рейтинг: 0 / 0
13.06.2013, 16:47
    #38296539
AVRob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер
В MSSQL этот запрос я составил следующим образом -

SELECT *
FROM table1
where
(num LIKE N'%[^0-9]25[^0-9]%')
or(num LIKE N'%[^0-9]25')
or(num LIKE N'25[^0-9]%')
or(num LIKE N'25')

В Local SQL BDE это не работает но и не выдает ошибку.
...
Рейтинг: 0 / 0
13.06.2013, 17:50
    #38296657
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер
AVRob, Regexp с жадным поиском который должен собрать самую левую последовательность цифр Digits.
...
Рейтинг: 0 / 0
13.06.2013, 17:55
    #38296671
AVRob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер
mayton, а как regexp использовать в SQL запросе?
...
Рейтинг: 0 / 0
13.06.2013, 17:58
    #38296679
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер
AVRobmayton, а как regexp использовать в SQL запросе?
На этот вопрос невозможно дать ответ зная только тип драйвера
BDE-LocalSQL. Мало информации.
...
Рейтинг: 0 / 0
13.06.2013, 18:01
    #38296691
AVRob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер
mayton, Какая еще нужна информация ?
...
Рейтинг: 0 / 0
14.06.2013, 11:26
    #38297550
const64
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер
AVRob, похоже, увы...

Local SQL, Like :

Indicates the similarity of one value as compared to another.

value [NOT] LIKE [substitution_char] comparison_value [substitution_char] [ESCAPE escape_char]

Description

Use the LIKE comparison predicate to filter a table based on the similarity of a column value to a comparison value. Use of substitution characters allows the comparison to be based on the whole column value or just a portion.

SELECT *

FROM customer

WHERE (company LIKE "Adventure Undersea")

The wildcard substitution character ("%") may be used in the comparison to represent an unknown number of characters. LIKE returns a TRUE when the portion of the column value matches that portion of the comparison value not corresponding to the position of the wildcard character. The wildcard character can appear at the beginning, middle, or end of the comparison value (or multiple combinations of these positions). For example, the statement below retrieves rows where the column value begins with "A" and is followed by any number of any characters. Matching values could include "Action Club" and "Adventure Undersea", but not "Blue Sports".

SELECT *

FROM customer

WHERE (company LIKE "A%")

The single-character substitution character ("_") may be used in the comparison to represent a single character. LIKE returns a TRUE when the portion of the column value matches that portion of the comparison value not corresponding to the position of the single-character substitution character. The single-character substitution character can appear at the beginning, middle, or end of the comparison value (or multiple combinations of these positions). Use one single-character substitution character for each character to be wild in the filter pattern For example, the statement below retrieves rows where the column value begins with "b" ends with "n", with one character of any value between. Matching values could include "bin" and "ban", but not "barn".

SELECT words

FROM dictionary

WHERE (words LIKE "b_n")

Use NOT to return the converse of a LIKE comparison.

Use ESCAPE when the wildcard character "%" or "_" appear as data in the column. The ESCAPE keyword designates an escape character. In the comparison value for the LIKE predicate, the character that follows the escape character is treated as a data character and not a wildcard character. Other wildcard characters in the comparison value are unaffected.

In the example below, the "^" character is designated as the escape character. In the comparison value for the LIKE predicate ("%10^%%"), the "%" that immediately follows the escape character is treated as data in the PercentValue. This allows filtering based on the string "10%".

SELECT *

FROM Sales

WHERE (PercentValue LIKE "%10^%%" ESCAPE "^")

LIKE can be used only with CHAR or compatible data types. If one value is of an incompatible data type, convert that value with the CAST function to a compatible data type. The comparison performed by the LIKE predicate is case-sensitive.
...
Рейтинг: 0 / 0
30.09.2013, 17:56
    #38412162
AVRob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер
решил это следующим громоздким запросом

SELECT * FROM table1 WHERE
(num LIKE '%15%')and(Not(
(num LIKE "%0150%")or(num LIKE "%015%")or(num LIKE "%150%")or(num LIKE "%0151%")or(num LIKE "%151%")or(num LIKE "%0152%")or(num LIKE "%152%")or(num LIKE "%0153%")or(num LIKE "%153%")or(num LIKE "%0154%")or(num LIKE "%154%")or(num LIKE "%0155%")or(num LIKE "%155%")or(num LIKE "%0156%")or(num LIKE "%156%")or(num LIKE "%0157%")or(num LIKE "%157%")or(num LIKE "%0158%")or(num LIKE "%158%")or(num LIKE "%0159%")or(num LIKE "%159%")or(num LIKE "%1150%")or(num LIKE "%115%")or(num LIKE "%1151%")or(num LIKE "%1152%")or(num LIKE "%1153%")or(num LIKE "%1154%")or(num LIKE "%1155%")or(num LIKE "%1156%")or(num LIKE "%1157%")or(num LIKE "%1158%")or(num LIKE "%1159%")or(num LIKE "%2150%")or(num LIKE "%215%")or(num LIKE "%2151%")or(num LIKE "%2152%")or(num LIKE "%2153%")or(num LIKE "%2154%")or(num LIKE "%2155%")or(num LIKE "%2156%")or(num LIKE "%2157%")or(num LIKE "%2158%")or(num LIKE "%2159%")or(num LIKE "%3150%")or(num LIKE "%315%")or(num LIKE "%3151%")or(num LIKE "%3152%")or(num LIKE "%3153%")or(num LIKE "%3154%")or(num LIKE "%3155%")or(num LIKE "%3156%")or(num LIKE "%3157%")or(num LIKE "%3158%")or(num LIKE "%3159%")or(num LIKE "%4150%")or(num LIKE "%415%")or(num LIKE "%4151%")or(num LIKE "%4152%")or(num LIKE "%4153%")or(num LIKE "%4154%")or(num LIKE "%4155%")or(num LIKE "%4156%")or(num LIKE "%4157%")or(num LIKE "%4158%")or(num LIKE "%4159%")or(num LIKE "%5150%")or(num LIKE "%515%")or(num LIKE "%5151%")or(num LIKE "%5152%")or(num LIKE "%5153%")or(num LIKE "%5154%")or(num LIKE "%5155%")or(num LIKE "%5156%")or(num LIKE "%5157%")or(num LIKE "%5158%")or(num LIKE "%5159%")or(num LIKE "%6150%")or(num LIKE "%615%")or(num LIKE "%6151%")or(num LIKE "%6152%")or(num LIKE "%6153%")or(num LIKE "%6154%")or(num LIKE "%6155%")or(num LIKE "%6156%")or(num LIKE "%6157%")or(num LIKE "%6158%")or(num LIKE "%6159%")or(num LIKE "%7150%")or(num LIKE "%715%")or(num LIKE "%7151%")or(num LIKE "%7152%")or(num LIKE "%7153%")or(num LIKE "%7154%")or(num LIKE "%7155%")or(num LIKE "%7156%")or(num LIKE "%7157%")or(num LIKE "%7158%")or(num LIKE "%7159%")or(num LIKE "%8150%")or(num LIKE "%815%")or(num LIKE "%8151%")or(num LIKE "%8152%")or(num LIKE "%8153%")or(num LIKE "%8154%")or(num LIKE "%8155%")or(num LIKE "%8156%")or(num LIKE "%8157%")or(num LIKE "%8158%")or(num LIKE "%8159%")or(num LIKE "%9150%")or(num LIKE "%915%")or(num LIKE "%9151%")or(num LIKE "%9152%")or(num LIKE "%9153%")or(num LIKE "%9154%")or(num LIKE "%9155%")or(num LIKE "%9156%")or(num LIKE "%9157%")or(num LIKE "%9158%")or(num LIKE "%9159%")))

Спасибо всем.
...
Рейтинг: 0 / 0
30.09.2013, 18:10
    #38412190
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер
AVRob, с точки зрения индуизма ты просадил себе карму на 100500 пунктов вниз.

Представляешь себе изумление того кто будет ревьюв делать твоего кода или
возьмёт в аутсорс?
...
Рейтинг: 0 / 0
30.09.2013, 18:16
    #38412200
AVRob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер
А этого запроса в исходном коде конечно нет.

Запрос создается в For цикле для заданного номера, что занимает очень мало места и вполне понятна.
...
Рейтинг: 0 / 0
30.09.2013, 18:20
    #38412203
AVRob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер
Запрос получен с помощью SQL.SaveToFile

C точки зрения индуизма хоть немного прибавил себе карму ? .
...
Рейтинг: 0 / 0
30.09.2013, 18:44
    #38412251
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер
Нет. Это чугунный лапоть. Я не знаю какой оптимизатор стоит по ту сторону BDE. Но думаю
что он стонет и плачет когда фетчит строки. Греет мегафлопами атмосферу и сжиает нефть
и газ, приближая конец чел. цивилизации. И мне от этого печаль.

А тебе как?
...
Рейтинг: 0 / 0
30.09.2013, 19:10
    #38412275
AVRob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер
mayton,

Вместо того, чтоб скорбить вместе с BDE, лучше бы подумал над поставленным вопросом.
Если не можешь дать ответ, сиди и молчи, не надо время отнимать.

Найденное решение - пока единственное для Local SQL BDE.

Для MS SQL я приводил соответствующий запрос вместе с постановкой вопроса, который не подходит для BDE.
...
Рейтинг: 0 / 0
01.10.2013, 12:28
    #38412854
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер
У меня целый пакет решений для тебя начиная от изменения ТЗ и частичного
переноса логики LIKE на сторону клиента и заканчивая постановкой вопроса
о переаттестации ваших специалистов.
...
Рейтинг: 0 / 0
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / [Delphi-BDE-LocalSQL] Как с помощью SQL запроса найти конкретный номер / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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