Конференция "Базы" » SQL - функция получения длинны запрашиваемого поля [D7, Paradox]
 
  • Soi (09.01.10 14:30) [0]
    Всем добрый день! Подскажите как, каким запросом  в Tquery получить длинну запрашиваемых данных (поля)?
    Например, есть поле содержащее фамилию, мне в результате выборки надо видеть кол-во знаков из которых состоит эта фамилия. Пытаюсь сделать вот так:  Select name, length(surname) from base.db
    Не помогает, вместо  слова LENGTH пробовал LEN, и все равно не помогает. При попытке запуска пишит , что-то типа неизвестной команды. У меня такое ощущение, что SQL в Delphi какой-то кастрированный, половину команд не понимает. В T-SQL при использовании компонента TADOQuery это делать 100% моно, сам лично делал. Подскажите, может в моем случае сиснтаксис неверен.
  • sniknik © (09.01.10 14:48) [1]
    > что SQL в Delphi какой-то кастрированный, половину команд не понимает.
    Delphi вообще SQL не понимает, не его в нем... а вот в том, что используется (движке) и надо смотреть. в его справке.
    у тебя судя по всему localsql bde (bde может "смотреть" и в какой нибудь другой движок, тогда будет другой sql), вот и посмотри в нем (файл справки - "LOCALSQL.HLP").
  • Anatoly Podgoretsky © (09.01.10 15:42) [2]
    > Soi  (09.01.2010 14:30:00)  [0]

    Зачем?
  • Anatoly Podgoretsky © (09.01.10 15:43) [3]
    > sniknik  (09.01.2010 14:48:01)  [1]

    Безполезно, нет такой функции
  • sniknik © (09.01.10 15:46) [4]
    > Безполезно, нет такой функции
    догадываюсь, но научится смотреть в справку это не мешает.
  • Anatoly Podgoretsky © (09.01.10 16:43) [5]
    > sniknik  (09.01.2010 15:46:04)  [4]

    Не мешает, но как правило размер практически никогда не нужен, но автор отмалчивается.
  • Soi (10.01.10 09:44) [6]
    Мне это нужно, для того чтобы запросом извлечь часть поля, а не все полностью. Привожу пример: в поле хранится фамилия с инициалами, Петров В.В. мне надо запросом отсечь инициалы, т.е. результат должен быть "Петров". Я планировал сделать так: Select name, substring(surname from 1 for length(surname)-4). Логика думаю понятна, вычисляется длинна поля, от нее отнимаетя 4 (это и есть инициалы с двумя точками), а потом функция substring извлекает часть строки от 1 до полученного результата. Вот вроде бы все элементарно, но облом.........................функции Length нет. Я работаю с файлами .DB, как моно сделать по-другому?
  • sniknik © (10.01.10 12:15) [7]
    по другому ..., можно сделать на другом движке, но вообще экономить 4 байта на записи при передаче это смешно, "реж" на клиенте, и не всегда, а только при отображении, так ко всему прочему еще и быстрее работать будет (уберутся лишние вычисления).
  • Anatoly Podgoretsky © (10.01.10 15:59) [8]
    Еще раз справшиваю зачем, ведь не ради же самой цели, без применения.
  • Soi (10.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 © (10.01.10 18:39) [10]
    ты сам говорил
    > В T-SQL при использовании компонента TADOQuery это делать 100% моно, сам лично делал.
    и в чем проблема? делай именно так как делал.
  • Soi (11.01.10 04:04) [11]
    ты о чем говоришь!!!? Там была БД на MS SQL, а здесь просто 2 DB  файла. Ты мне скажи каким образом я подключусь к ним используя adoqeury? Ну даже если как-то полключусь, движок же другой, вы же здесь сами про это говорили. Тут не в компоненте дело..............
  • sniknik © (11.01.10 07:44) [12]
    > Ты мне скажи каким образом я подключусь к ним используя adoqeury?
    Jet, ISAM Paradox 4.x

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

    > Тут не в компоненте дело..............
    точно.
 
Конференция "Базы" » SQL - функция получения длинны запрашиваемого поля [D7, Paradox]
Есть новые Нет новых   [134435   +33][b:0][p:0]