-
Всем добрый день! Подскажите как, каким запросом в Tquery получить длинну запрашиваемых данных (поля)? Например, есть поле содержащее фамилию, мне в результате выборки надо видеть кол-во знаков из которых состоит эта фамилия. Пытаюсь сделать вот так: Select name, length(surname) from base.db Не помогает, вместо слова LENGTH пробовал LEN, и все равно не помогает. При попытке запуска пишит , что-то типа неизвестной команды. У меня такое ощущение, что SQL в Delphi какой-то кастрированный, половину команд не понимает. В T-SQL при использовании компонента TADOQuery это делать 100% моно, сам лично делал. Подскажите, может в моем случае сиснтаксис неверен.
-
> что SQL в Delphi какой-то кастрированный, половину команд не понимает. Delphi вообще SQL не понимает, не его в нем... а вот в том, что используется (движке) и надо смотреть. в его справке. у тебя судя по всему localsql bde (bde может "смотреть" и в какой нибудь другой движок, тогда будет другой sql), вот и посмотри в нем (файл справки - "LOCALSQL.HLP").
-
> Soi (09.01.2010 14:30:00) [0]
Зачем?
-
> sniknik (09.01.2010 14:48:01) [1]
Безполезно, нет такой функции
-
> Безполезно, нет такой функции догадываюсь, но научится смотреть в справку это не мешает.
-
> sniknik (09.01.2010 15:46:04) [4]
Не мешает, но как правило размер практически никогда не нужен, но автор отмалчивается.
-
Мне это нужно, для того чтобы запросом извлечь часть поля, а не все полностью. Привожу пример: в поле хранится фамилия с инициалами, Петров В.В. мне надо запросом отсечь инициалы, т.е. результат должен быть "Петров". Я планировал сделать так: Select name, substring(surname from 1 for length(surname)-4). Логика думаю понятна, вычисляется длинна поля, от нее отнимаетя 4 (это и есть инициалы с двумя точками), а потом функция substring извлекает часть строки от 1 до полученного результата. Вот вроде бы все элементарно, но облом.........................функции Length нет. Я работаю с файлами .DB, как моно сделать по-другому?
-
по другому ..., можно сделать на другом движке, но вообще экономить 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 и никуда мне не дется от этого, а сделать надо позарез это.
-
ты сам говорил > В T-SQL при использовании компонента TADOQuery это делать 100% моно, сам лично делал. и в чем проблема? делай именно так как делал.
-
ты о чем говоришь!!!? Там была БД на MS SQL, а здесь просто 2 DB файла. Ты мне скажи каким образом я подключусь к ним используя adoqeury? Ну даже если как-то полключусь, движок же другой, вы же здесь сами про это говорили. Тут не в компоненте дело..............
-
> Ты мне скажи каким образом я подключусь к ним используя adoqeury? Jet, ISAM Paradox 4.x
> движок же другой, вы же здесь сами про это говорили. именно, и у другого движка другие возможности, другой хелп.
> Тут не в компоненте дело.............. точно.
|