Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.08.21;
Скачать: CL | DM;

Вниз

SQL - функция получения длинны запрашиваемого поля   Найти похожие ветки 

 
Soi   (2010-01-09 14:30) [0]

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


 
sniknik ©   (2010-01-09 14:48) [1]

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


 
Anatoly Podgoretsky ©   (2010-01-09 15:42) [2]

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

Зачем?


 
Anatoly Podgoretsky ©   (2010-01-09 15:43) [3]

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

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


 
sniknik ©   (2010-01-09 15:46) [4]

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


 
Anatoly Podgoretsky ©   (2010-01-09 16:43) [5]

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

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


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

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


 
sniknik ©   (2010-01-10 12:15) [7]

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


 
Anatoly Podgoretsky ©   (2010-01-10 15:59) [8]

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


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

Мне нужно запросом выбрать данные из 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 и никуда мне не дется от этого, а сделать надо позарез это.


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

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


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

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


 
sniknik ©   (2010-01-11 07:44) [12]

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2011.08.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.009 c
8-1215009117
DFT
2008-07-02 18:31
2011.08.21
OpenGL вращение сцены


15-1304065019
>|<
2011-04-29 12:16
2011.08.21
Invisible Internet Project


15-1304271691
Сергей
2011-05-01 21:41
2011.08.21
Форумы по вебдизайну и вебпрограммированию


15-1303982784
Дмитрий Тимохов
2011-04-28 13:26
2011.08.21
Как отключить в BPL добавление VersionInfo?


2-1305015386
werewolf2
2011-05-10 12:16
2011.08.21
освобождение objects stringlist а