Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL - функция получения длинны запрашиваемого поля [D7, Paradox]


Soi ©   (2010-01-09 14:30:00) 

Всем добрый день! Подскажите как, каким запросом  в Tquery получить длинну запрашиваемых данных (поля)?
Например, есть поле содержащее фамилию, мне в результате выборки надо видеть кол-во знаков из которых состоит эта фамилия. Пытаюсь сделать вот так:  Select name, length(surname) from base.db
Не помогает, вместо  слова LENGTH пробовал LEN, и все равно не помогает. При попытке запуска пишит , что-то типа неизвестной команды. У меня такое ощущение, что SQL в Delphi какой-то кастрированный, половину команд не понимает. В T-SQL при использовании компонента TADOQuery это делать 100% моно, сам лично делал. Подскажите, может в моем случае сиснтаксис неверен.


sniknik   (2010-01-11 07:44:00) [1]

> Ты мне скажи каким образом я подключусь к ним используя adoqeury?
Jet, ISAM Paradox 4.x

> движок же другой, вы же здесь сами про это говорили.
именно, и у другого движка другие возможности, другой хелп.

> Тут не в компоненте дело..............
точно.


Soi   (2010-01-11 04:04:00) [2]

ты о чем говоришь!!!? Там была БД на MS SQL, а здесь просто 2 DB  файла. Ты мне скажи каким образом я подключусь к ним используя adoqeury? Ну даже если как-то полключусь, движок же другой, вы же здесь сами про это говорили. Тут не в компоненте дело..............


sniknik   (2010-01-10 18:39:00) [3]

ты сам говорил
> В T-SQL при использовании компонента TADOQuery это делать 100% моно, сам лично делал.
и в чем проблема? делай именно так как делал.


Soi   (2010-01-10 18:27:00) [4]

Мне нужно запросом выбрать данные из 2-х таблиц. Критерий выбора это фамилия. Дело в том, что в одной их таблиц ФИО разбиты по отдельным столбцам, а в другой хранится в одном поле. Получается, что просто так я не могу их приравнять друг к другу, потому как данные в полях разные. Вот собственно причина моих мучений. Я хочу сделать запрос типа: Select "name"."base.db", "surname"."base.db", "ownername"."base1.db" from base.db, base1.db where "surname"."base.db"=(select substring("ownername"."base1.db" from 1 for length("ownername"."base1.db")-4)) .

Мне бы просто совет, как можно это сделать, или каким другим путем пойти? А то все говорят, что на другом движке это моно реализовать, а конкретики никто не говорит.  Я и сам понимаю про другой джвижок, если бы я имел БД на MS SQL, я бы не парился, уже давно бы все сделал. Там и функция LENGTH есть, и всего остального добра навалом. Но у меня вот 2 файла с долбанным расширением DB и никуда мне не дется от этого, а сделать надо позарез это.


Anatoly Podgoretsky   (2010-01-10 15:59:00) [5]

Еще раз справшиваю зачем, ведь не ради же самой цели, без применения.


sniknik   (2010-01-10 12:15:00) [6]

по другому ..., можно сделать на другом движке, но вообще экономить 4 байта на записи при передаче это смешно, "реж" на клиенте, и не всегда, а только при отображении, так ко всему прочему еще и быстрее работать будет (уберутся лишние вычисления).


Soi   (2010-01-10 09:44:00) [7]

Мне это нужно, для того чтобы запросом извлечь часть поля, а не все полностью. Привожу пример: в поле хранится фамилия с инициалами, Петров В.В. мне надо запросом отсечь инициалы, т.е. результат должен быть "Петров". Я планировал сделать так: Select name, substring(surname from 1 for length(surname)-4). Логика думаю понятна, вычисляется длинна поля, от нее отнимаетя 4 (это и есть инициалы с двумя точками), а потом функция substring извлекает часть строки от 1 до полученного результата. Вот вроде бы все элементарно, но облом.........................функции Length нет. Я работаю с файлами .DB, как моно сделать по-другому?


Anatoly Podgoretsky   (2010-01-09 16:43:00) [8]

> sniknik  (09.01.2010 15:46:04)  [4]

Не мешает, но как правило размер практически никогда не нужен, но автор отмалчивается.


sniknik   (2010-01-09 15:46:00) [9]

> Безполезно, нет такой функции
догадываюсь, но научится смотреть в справку это не мешает.


Anatoly Podgoretsky   (2010-01-09 15:43:00) [10]

> sniknik  (09.01.2010 14:48:01)  [1]

Безполезно, нет такой функции


Anatoly Podgoretsky   (2010-01-09 15:42:00) [11]

> Soi  (09.01.2010 14:30:00)  [0]

Зачем?


sniknik   (2010-01-09 14:48:00) [12]

> что SQL в Delphi какой-то кастрированный, половину команд не понимает.
Delphi вообще SQL не понимает, не его в нем... а вот в том, что используется (движке) и надо смотреть. в его справке.
у тебя судя по всему localsql bde (bde может "смотреть" и в какой нибудь другой движок, тогда будет другой sql), вот и посмотри в нем (файл справки - "LOCALSQL.HLP").


Наверх

Титульная страница Поиск, карта сайта Написать письмо