Модераторы: Akella

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> substring в FireBird 
V
    Опции темы
holodnaya
Дата 15.11.2009, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Добрый вечер! 
Работаю c FireBird-2.1.3.  В запросе мне нужно выбрать фамилию и инициалы, пишу следующее
Код

select st.lastname || ' ' || substring(st.name, 1, 1) || '.' || substring(st.otchestvo, 1, 1) ||'.' FIO
from Table1 st

при попытке выполнить запрос, вижу следующее сообщение 
Код

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, char 47.

Вобщем, ругается именно на функцию substring. 
Как мне правильно напистаь запрос?

Это сообщение отредактировал(а) holodnaya - 15.11.2009, 23:56
PM MAIL   Вверх
Gluttton
Дата 16.11.2009, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 7
Всего: 54



Попробуй так:

Код

select 
    st.lastname || ' ' || 
    substring(st.name from 1 for 1) || '.' || 
    substring(st.otchestvo from 1 for 1) ||'.' FIO
from Table1 st


Источник.


--------------------
Слава Україні!
PM MAIL   Вверх
Данкинг
Дата 16.11.2009, 00:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Gluttton, да, верно, сейчас проверил - работает:
Код

select substring(addr from 1 for 5) from base

 smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
holodnaya
Дата 16.11.2009, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Спасибо! Вечером приду домой, перепишу. И спасибо за ссылку, будет где посмотреть и другие операторы smile
PM MAIL   Вверх
Akella
Дата 16.11.2009, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(holodnaya @  15.11.2009,  23:55 Найти цитируемый пост)
substring(st.name, 1, 1)

а где ты вычитала такой синтаксис?
PM MAIL   Вверх
holodnaya
Дата 18.11.2009, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Цитата(Akella @  16.11.2009,  12:30 Найти цитируемый пост)
а где ты вычитала такой синтаксис? 

В книжке "FireBird 1.5 быстрый старт" (для более поздней версии подобной книжки у меня нет) в разделел FireBird SQL  написано: "FireBird наиболее строгим образом соответсвует стандарту SQL" (по сравнению с другими СУБД).
И так как больше никаких описаний я не встречала про оператор sub и  substring кроме как указания в скобках (строка, начало_позиции, кол-во_символов), то решила, что это и есть стандартный (неизмененный оператор). Но мои предположения оказались не совсем верными. Сейчас у меня есть ссылка на язык SQL, используемый именно в FireBird, буду разбираться.
PM MAIL   Вверх
Данкинг
Дата 18.11.2009, 00:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Цитата(holodnaya @  18.11.2009,  00:16 Найти цитируемый пост)
"FireBird наиболее строгим образом соответсвует стандарту SQL" 

А непосредственно substring-то при чём тут: это всё же не SQL-оператор.

Это сообщение отредактировал(а) Данкинг - 18.11.2009, 00:32


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
holodnaya
Дата 18.11.2009, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Цитата(Данкинг @  18.11.2009,  00:32 Найти цитируемый пост)
А непосредственно substring-то при чём тут: это всё же не SQL-оператор.

А что это? И почему тогда в IBExoert при написании SQL - запроса он сам этот оператор подставляет?


Это сообщение отредактировал(а) holodnaya - 18.11.2009, 00:39
PM MAIL   Вверх
Данкинг
Дата 18.11.2009, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Цитата(holodnaya @  18.11.2009,  00:38 Найти цитируемый пост)
А что это?

Я вот затрудняюсь сказать, что такое  Substring  применительно к FB. smile Может быть, Akella подскажет. Я бы сказал так: функция встроенного языка FB. К примеру, в Access тоже ведь можно использовать Mid, но это же не SQL-оператор Access'а как такового, а оператор VBA (и VB). smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
holodnaya
Дата 18.11.2009, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Цитата(Данкинг @  18.11.2009,  00:32 Найти цитируемый пост)
А непосредственно substring-то при чём тут: это всё же не SQL-оператор.

А что тогда? И почему в IBExpert автоматически подставляется при написании SQL запроса в SQL Editor?

PM MAIL   Вверх
Akella
Дата 18.11.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(holodnaya @  18.11.2009,  00:16 Найти цитируемый пост)
В книжке "FireBird 1.5 быстрый старт" (для более поздней версии подобной книжки у меня нет)

Зато есть
Firebird 2.0 Release Notes
Firebird 2.1 Release Notes
и т.д.  smile

Firebird SUBSTRING
http://firebirdsql.su/doku.php?id=substring


Есть ещё документация
%firebird%\doc\sql.extensions\README.builtin_functions.txt 
%firebird% - папка, где установлен firebird sql сервер


Цитата(Данкинг @  18.11.2009,  00:32 Найти цитируемый пост)
А непосредственно substring-то при чём тут: это всё же не SQL-оператор.

Правильно, substring - это встроенная функция.


Цитата(Данкинг @  18.11.2009,  00:54 Найти цитируемый пост)
Я бы сказал так: функция встроенного языка FB. 

Наверное, не языка, а sql-сервера.

Добавлено через 10 минут и 22 секунды
Цитата(holodnaya @  18.11.2009,  01:17 Найти цитируемый пост)
И почему в IBExpert автоматически подставляется при написании SQL запроса в SQL Editor?

Потому что разработчики постарались, чтобы тебе и мне и всем было легче.


Это сообщение отредактировал(а) Akella - 18.11.2009, 10:29
PM MAIL   Вверх
holodnaya
Дата 18.11.2009, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Цитата(Akella @  18.11.2009,  10:20 Найти цитируемый пост)
Потому что разработчики постарались, чтобы тебе и мне и всем было легче.

Я понимаю назначение автоматической подстановки. Смысл вопрос был немножко другой: если это не SQL-функция, то почему подставляется в редакторе SQL запроса. 
PM MAIL   Вверх
Данкинг
Дата 18.11.2009, 13:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Цитата(holodnaya @  18.11.2009,  12:37 Найти цитируемый пост)
Смысл вопрос был немножко другой: если это не SQL-функция, то почему подставляется в редакторе SQL запроса.  

Во-первых, а где ей ещё подставляться-то? Во-вторых, потому что ты эту самую функцию sql-сервера включаешь в запрос. 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
holodnaya
Дата 18.11.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Данкинг, я поняла насчет функций ) Спасибо
Ещё вопрос. Если в запросе выбираешь текстовое поле, то под него выделяется столько символов, сколько изначально зарезервировано, что при выводе результатов завпроса в какой-нибудь отчет не очень удобно. Например, в Pole1 char(20), а на самом деле туда записана фамилия из 10 символов и при конкатенации строк получаются очень большие пробелы.
Какую функцию (оператор) можно использовать в этом случае?


PM MAIL   Вверх
Данкинг
Дата 18.11.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Цитата(holodnaya @  18.11.2009,  14:26 Найти цитируемый пост)
Какую функцию (оператор) можно использовать в этом случае?

trim ? smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0637 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.