Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

Как выводить Фамилию Имя Отчество?   Найти похожие ветки 

 
linx ©   (2004-05-08 23:45) [0]

Подскажите пожалуйста как мне сформировать набор данных, чтобы в одном поле выводилось
Фамилия[пробел]Имя[пробел]Отчество?
Здесь Фамилия, Имя и Отчество существуют отдельно в разных полях.
Каким запросом я могу сшить эти данные?


 
kaif ©   (2004-05-09 03:07) [1]

Используйте конкатенацию строк ||
select
 name||second_name||p_name
from ...
where...


 
linx ©   (2004-05-09 03:50) [2]

Спасибо!


 
gu_est   (2004-05-09 20:07) [3]

а как быть если поле name:varchar(50)?


 
gu_est   (2004-05-09 20:10) [4]

имеется в виду как убрать лишние пробелы при сшивании?


 
Sergey Masloff   (2004-05-09 20:18) [5]

gu_est   (09.05.04 20:10) [4]
никаких лишних пробелов нет


 
gu_est   (2004-05-09 20:31) [6]

у меня ситуация была следующая:
такие же три поля как у автора (ФИО) все описаны как VARCHAR(50)
использовался FIBdataset(запрос с конкатенацией всех трех полей), а потом выводился отчет в QReport и это результирующее поле выгледело очень непристойно (по 50 символов каждая составляющая)
сервер - Yaffil


 
sniknik ©   (2004-05-09 21:28) [7]

> (по 50 символов каждая составляющая)
значит поле у тебя не varchar а char(50) вот и разница, во всяком случае так поле создавалось наверняка.
иши функцию типа Trim в документации Yaffil, или меняй типы поля.

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


 
Sergey Masloff   (2004-05-09 21:36) [8]

sniknik ©   (09.05.04 21:28) [7]
>значит поле у тебя не varchar а char(50)
Неа, это неважно, просто у FIBdataset есть свойство - фича добивать до объявленой длины поля. Вроде бы так, я на 100% не уверен а проверять лень но уверен почти наверняка


 
sniknik ©   (2004-05-09 21:49) [9]

> Неа, это неважно
специально проверял (для меня это важно в одном месте), на access, mssql и ib6.5, провайдер для ib - zstyle oledb, ado для всех.
допускаю что оно может "добиватся" пробелами но тогда не движком а каким нибудь посредником отличным от приведенного (чемто вроде BDE, ...ets), также допускаю что Yaffil "более глючен" (не по стандартам) но это менее вероятно учитывая что он более новый.
также таким свойством обладает связки с клиентдатасет (датасет провайдер + клиентдатасет, кто из них х.з.), если он использовался то ... ну понятно в общем.


 
sniknik ©   (2004-05-09 22:06) [10]

проверил специально, правда на персонал версии (сервер ставить нехотся)
Yaffil SQL Server (EM) Engine / версия 6.5.1.884

выполняем поочередно
CREATE TABLE IDTable (ID INT, CVar VARCHAR(50), CNot Char(50))

INSERT INTO IDTABLE (ID,CVAR,CNOT) VALUES (1, "Test", "Test")

SELECT Length(CVAR),  Length(CNOT)  FROM IDTABLE


результат 4, 50
ясно? нет?  вторая (50) "добивается" первая нет.


 
Sergey Masloff   (2004-05-09 22:19) [11]

sniknik ©   (09.05.04 22:06) [10]
Я торможу (по причине полного неиспользования Char полей кроме CHAR(1))
в Options FIBDataset есть poTrimCharField - обрезать пустые для любых строковых ;-)


 
sniknik ©   (2004-05-09 22:27) [12]

FIBDataset я как раз никогда не использовал... да и неважно это, у него же составляются в запросе (на уровне движка (!)), сам поначалу упустил. ни ADO ни BDE ни FIBDataset с клиентдатасетом и провайдером вместе, все ни причем, только char/varchar.


 
Sergey Masloff   (2004-05-09 22:31) [13]

>ни ADO ни BDE ни FIBDataset с клиентдатасетом и провайдером >вместе, все ни причем, только char/varchar.
Да, правда твоя. Пришли к консенсусу ;-)

Меня что с толку сбило - я помнится давно читал статью на ibphoenix.com насчет того что при передаче клиенту char жмется то есть оверхеда нет. А потом клиент (gds32.dll) длину для char восстанавливает. Но за давностью в голове все перемешалось и влез в беспощадный спор ;-)


 
linx ©   (2004-05-11 09:23) [14]

Народ, а подскажите пожалуйста, а можно-ли мне в таком составном поле получать как Фамилию Имя Отчество, так и, скажем Название предприярия.
Короче у меня SQL-запрос такого типа:
SELECT ... Fam.NaturalPerson||" "||Name.NaturalPerson||" "||Patron.NaturalPerson ...
FROM ... NaturalPerson ...
UNION
SELECT ... NameOrganization.JuridicalPerson ...
FROM ... JuridicalPerson ...
При попытке выполненить такой запроса получаю ошибку
"Data type unknown". Логика этой ошибки мне в принципе понятна, но как все же впихнуть данные по ФИО и названию предприятия в одно поле?


 
Johnmen ©   (2004-05-11 10:35) [15]

>SELECT ... Fam.NaturalPerson||" "||Name.NaturalPerson||" "||Patron.NaturalPerson ...
>FROM ... NaturalPerson ...

Накосячено, однако...:)

SELECT CAST(F1 AS VARCHAR(X)) FROM T1
UNION
SELECT CAST(F2 AS VARCHAR(X)) FROM T2


 
linx ©   (2004-05-11 10:41) [16]

А, ну да...
Бес попутал. :)


 
Term ©   (2004-05-11 11:07) [17]

а это нужно для отображения в гриде, чтобы три поля были в одной колонке?

можно использовать calculated field как вариант



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

Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.032 c
7-1082821040
Mosquito
2004-04-24 19:37
2004.05.30
Мониторинг лог файла


14-1084001250
infom
2004-05-08 11:27
2004.05.30
Про шахматы


3-1084340256
XYZ
2004-05-12 09:37
2004.05.30
Пробл. с обновлением неск.записей через OraQuery


14-1084512314
faith
2004-05-14 09:25
2004.05.30
Получение введённого символа


1-1083835933
UnDISCOvery
2004-05-06 13:32
2004.05.30
Сравнение Delphi 5 и Delphi 7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский